вторник, 19 марта 2013 г.

Картинки

1. Решение задач 

Задача 1. Напишите программу, рисующую треугольники в видимой части окна. Вершины задаются случайным образом (вырожденный треугольник допустим).
Задача 2. Напишите программу, рисующую вот такую фигуру (центр фигуры - фиксированная точка, конец лучика - случайная точка на видимой части окна). Размер пузырика - случайный из небольшого диапазона, зависящего от размеров окна.

2. Использование картинок

Для работы с готовым изображением используются следующие процедуры и функции:

n:=LoadPicture(fname) – загружает рисунок из файла с именем fname (строковый тип, пишется в ' ') в оперативную память и возвращает описатель рисунка в целую переменную n; если файл не найден, то возникает ошибка времени выполнения. Загружать можно рисунки в формате .bmp, .jpg или .gif.
DrawPicture(n,x,y) - выводит рисунок с описателем n в позицию (x,y) графического окна.
DestroyPicture(n) - удаляет рисунок с описателем n из оперативной памяти, описатель рисунка при этом становится недействительным.

Задача 1. Нарисуйте в графическом редакторе Paint картинку рыбки, размером 100х100 пиксел и сохраните ее в файл под именем fish.bmp. Напишите программу в Паскале, выводящую рубку в центр видимой части окна.
Пример, программы, выводящей изображение 1.jpg в верхний левый угол окна:

uses GraphABC;
var
  pic: integer;
begin
  pic:=LoadPicture('1.jpg');
  DrawPicture(pic,0,0);
end.

Задача 2. Напишите программу, двигающую вашу рыбку по какой-нибудь линии в окне. Пример рабочей программы можно посмотреть в разделе SAMPLES->GraphABC->movingobject.pas

понедельник, 4 марта 2013 г.

Генератор случайных чисел

1. Оператор RANDOM

В программировании часто возникают задачи, при решении которых необходимо получать случайные числа из некоторого диапазона. Алгоритмы, реализующие такие последовательности не могут быть поистине случайными, а получаются в результате некоторых вычислений.  Такие наборы называются псевдослучайными.
Random  -  функция (типа  real) возвращает случайное вещественное в диапазоне [0..1)
Random(x) - функция типа integer (x - integer) возвращает случайное целое в диапазоне от 0 до x-1
Например, оператор random(10)-5 задает числа от -5 до 4 (10 штук).
Задание 1.
Напишите генератор случайных чисел, задающий следующие диапазоны:

  • от 0 до 100;
  • от 0 до 99;
  • от -10 до 10;
  • от -13 до 14.

2. Использование оператора Random в анимации

Для задания положения, размера или цвета объекта можно использовать генератор случайных чисел. Рассмотрим задачу, в которой случайным является положение точки на экране.

Задача 1. Засыпать окно (учитывать изменение размеров) точками.
uses GraphABC;
var x,y,i:integer;
begin
for i:=1 to 10000 do
begin
x:=random(WindowWidth)+1; //WindowWidth - возвращает ширину окна
y:= random(WindowHeight)+1; // WindowHeight - возвращает высоту окна
SetPixel(x,y,clblack);
end;
end.

Задача 2. Засыпать окно точками разного цвета.
Изменения надо внести только в оператор рисования точки, а именно в определение цвета:
SetPixel(x,y,RGB(Random(256),Random(256),Random(256)));

Задача 3. Напишите программу, рисующую и стирающую закрашенные шарики случайным цветом, случайного размера (не более 1/10 от ширины окна) и случайного расположения, не подходящего к границам окна на расстояние ближе 1/10 ширины окна.
Для задержки изображения используйте оператор Sleep(x):
Sleep(ms)  - процедура (ms - integer) осуществляет паузу в выполнении программы на ms миллисекунд.

Задача 4. Напишите программу, рисующую звезды (звезда - это набор отрезков разной длины, выходящих из одной точки). Размер звезды должен быть ограничен 1/10 ширины окна, количество лучей от 3 до 20. Положение центра звезды и ее цвета - случайно. Для рисования звезды используйте процедуру.