Pascal: программы, работающие в графическом режиме

Задача 1.

Построить семейство одинаковых окружностей, центры которых лежат на вертикально вращающемся отрезке, верхний конец которого закреплен.

Переменные:

x, y – координаты центра очередного маленького круга;
y0 – смещение кругов по вертикале;
i – переменная цикла;
t – угол поворота;
drive – тип графического драйвера;
mode – режим работы графического адаптера.

Для решения задачи:

  1. инициируем модуль graph;
  2. устанавливаем начальные значения радиуса, координаты центра;
  3. организуем цикл, в котором закрашиваем круги со все большим радиусом до тех пор, пока не будет нажата любая клавиша.

Задача 2.

Построить движущиеся изображения НЛО на фоне звездного неба.

Переменные:

x, y – случайные координаты;
r – радиус;
i – переменная цикла;
drive – тип графического драйвера;
mode – режим работы графического адаптера.

Алгоритм решения задачи:

  1. инициируем модуль graph;
  2. организуем безусловный цикл по переменной i и рисуем звездное небо;
  3. организуем цикл до тех пор, пока не будет нажата любая клавиша;
  4. в этом цикле рисуем НЛО с помощью двух эллипсов, двух линий и двух маленьких кружочков, держим на экране, затем стираем изображение процедурой CLEARDEVICE;
  5. опять рисуем звездное небо;
  6. определяем случайным образом координаты следующего изображения НЛО;
  7. после нажатия любой клавиши закрываем графический режим.

Та же программа может быть написана с использованием пары процедур

Процедура GETIMAGE(lx,ly,rx,ry,saucer^) помещает изображение в буфер, а PUTIMAGE(x,y,saucer^,xorput) выводит в заданное место изображение.
Параметр xorput определяет способ вывода на экран – исключающее ИЛИ.
Например, операторами

GETIMAGE(lx,ly,rx,ry,saucer^);
READLN;
PUTIMAGE(x,y,saucer^,xorput);

мы выводим изображение на экран и после нажатия любой клавиши стираем его.
Можно использовать другие способы вывода изображения на экран, например:

NORMALPUT – стирает часть экрана и на это место выводит изображение;
NOTPUT – делает то же самое, но изображение инвертируется;
ORPUY – дописывает новое изображение.

Переменные:

x, y – случайные координаты;
r – радиус;
i – переменная цикла;
saucer – указатель буфера хранения изображения;
drive – тип графического драйвера;
mode – режим работы графического адаптера.

Алгоритм решения задачи:

  1. инициируем модуль graph;
  2. рисуем НЛО с помощью двух эллипсов, двух линий и двух маленьких кружочков, держим на экране, затем стираем изображение процедурой CLEARDEVICE;
  3. определяем размер буфера и помещаем в него изображение;
  4. организуем безусловный цикл по переменной i и рисуем звездное небо;
  5. организуем цикл до тех пор, пока не будет нажата любая клавиша;
  6. опять рисуем звездное небо;
  7. в этом цикле помещаем изображение из буфера на экран, держим его на экране, затем стираем изображение;
  8. определяем случайным образом координаты следующего изображения НЛО;
  9. после нажатия любой клавиши закрываем графический режим.

Задача 3.

Построить астроиду-кривую, заданную параметрическим уравнением x = b cos3(t), y = b sin3(t), t принадлежит интервалу [0, 2(пи)]

Рис. 1 – Астроида