Для того чтобы нарисовать движущийся объект, необходимо:
а) знать процедуры, рисующие различные графические примитивыи другие вспомогательные функции:
модуль GRAPH
circle(x, y:integer; R:word) –рисует окружность.
rectangle(x1, y1, x2, y2:integer) –рисует прямоугольник, (х1, у1) – координаты левого верхнего угла, (х2, у2) – правого нижнего.
putpixel(x, y:integer; color:word) –рисует точку с координатами (х, у) и цветом color.
ellipse(x, y:integer; stangle, endangle, xr, xy:word) –рисует дугу эллипса с центром в точке (х, у), полуосями xr, yr; stangle и endangle – начальный и конечный углы дуги (описываются от горизонтальной оси против часовой стрелки).
line(x1, y1, x2, y2:integer) –рисует линию, начинающуюся в точке (х1, у1) и заканчивающуюся в точке (х2, у2).
setcolor(color:word) –устанавливает цвет линии, color = 0..15.
SetBkColor(ColorNum : Word);
Устанавливает текущий цвет фона, используя палитру. Номера цветов фона находятся в диапазоне от 0 до 15.
FloodFill(X, Y : Integer; Border : Word);
Закрашивает замкнутую область, используя текущие стиль и цвет закраски.Точка с координатами (X, Y) - начальная точка внутри замкнутой области, с которой начнется закраска. Текущий шаблон закраски устанавливается процедурами SetFillStyle и SetFillPattern. Закрашивается область, ограниченная цветом с номером Border.
SetFillStyle(Pattern : Word; Color : Word);
Устанавливает цвет и стиль закраски.
OutTextXY(X, Y : Integer; TextString : String);
Посылает строку на устройство вывода.Отображает TextString в позиции (X, Y). Строка TextString усекается на границе области просмотра, если она слишком длинная.
Модуль CRT
delay(ms:word) –процедура приостанавливает выполнение программы на ms миллисекунд.
keypressed –процедура возвращает значение TRUE, если была нажата какая-л. клавиша на клавиатуре и FALSE – если нет. Тип процедуры boolean.
Другие необходимые процедуры см. в лекциях и в описании языка Турбо Паскаль.
ReadKey: Char. –Функция считывает символ, соответствующий нажатой клавише. Если нажата функциональная клавиша, в первый раз функция принимает значение #0, во второй раз –значение кода этой клавиши. Если ни одна клавиша не была нажата, то функция приостанавливает работу программы и ожидает нажатия клавиши.
Стандартным режимом работы компьютера является текстовый. Следовательно, чтобы перейти в графический режим, его надо установить (инициализировать). Делается это с помощью процедуры
GraphDriver -параметр, задающий тип графического драйвера, то есть специальной программы, управляющей экраном в графическом режиме. Стандартно используется драйвер EGAVGA.BGI
GraphMode –параметр, определяющий режим работы с выбранным драйвером.
Path –параметр, указывающий путь к нужному драйверу, т.е. в каком каталоге он записан.
Понятно, что обычному пользователю нет необходимости анализировать это. Поэтому имеется вариант, при котором машина автоматически выставляет эти параметры:
program paint1;
uses graph;
var
gd,gm:integer;
begin
gd:=detect;
initgraph(gd,gm,'');
При этом процедура сама проверяет наличие и тип видеоадаптера (устройства сопряжения компьютера и монитора), загружает соответствующий графический драйвер и устанавливает значение второго параметра. Так как в качестве третьего параметра указана пустая строка, то драйвер должен находиться в текущем каталоге. Иначе возникает ошибка. Для ее устранения необходимо в каталоге File выбрать пункт Change Dir и установить в качестве текущего каталог BGI или в качестве пути при вызове процедуры initgraph установить путь c:\tp\bgi.
в)Знать Алгоритмы рисования движущихся объектов
Необходимо знать алгоритмы рисования движущихся объектов в цикле:
1. вычисляется значение координат объекта
2. объект рисуется
3. организуется приостановка выполнения программы, чтобы глаза человека восприняли образ объекта
4. объект стирается (т. е. рисуется цветом фона)
На самом деле, удобнее сначала стирать объект, а потом рисовать на новом месте, что и делает следующая программа:
Пример рисования движущегося объекта.
В данной программе шар движется по дорожке вправо.