Кодинг
★ Рубрика: Кодинг
★ Тема: Pascal

Пример простой анимации в Паскале

Задача. Составить программу, которая передвигает горизонтально по экрану круг радиуса R=20 пикселей.

Алгоритм решения этой задачи может быть таким.
1.1. Задать драйвер и режим.
1.2. Инициировать Graph.
2. Если Ошибка=GrOk то
2.1. Очистить экран.
2.2. Задать тип и цвет линии.
2.3. Нарисовать и закрасить круг.
2.4. Задать границы области, которую нужно сохранить, так, чтобы в ней уместилось все сохраняемое изображение.
2.5. Сохранить образ.
2.6. Повторять
а) Задержать вывод;
б) Стереть изображение;
в) Изменить координату х1, например: х1=х1+10;
г) Вывести изображение;
Пока не нажата любая клавиша
2.7. Закрыть Graph
3. Закончить.
Program MoveCircle;
Uses
Crt,Graph;
Var
P : pointer;
Size : Word;
Er,Gd,Gm : Integer;
x1,y1,x2,y2 : Integer;
Begin
Gd := Detect;
Gm := VgaHi;
InitGraph(Gd,Gm,’C:\bp\bgi’);
Er := Graphresult;
If Er = GrOk then
Begin { графический режим установлен }
SetBkColor(Blue);
Cleardevice;
SetTextStyle(0,0,2);
OutTextXY(10,15,’Нажми любую клавишу ...’);
Setcolor(Red);
SetLineStyle(0,0,3);
Circle(150,120,20);
SetFillStyle(8,Yellow); { штриховка ххх желтым }
 { заштриховать до красного }
FloodFill(150,120,Red);
{ координаты сохраняемой области }
x1 := 129;
y1 := 99;
x2 := 171;
y2 := 141;
{ Сохранение образа }
Size := ImageSize(x1,y1,x2,y2);
GetMem(p,Size);
GetImage(x1,y1,x2,y2,P^);
{Перемещение образа}
Repeat
Delay(50);
{Стираем старое изображение}
PutImage(x1,y1,P^, XorPut);
 {Перемещение круга}
x1:=x1+10;
PutImage(x1,y1,P^, NormalPut);
Until KeyPressed; { Останов изображения }
CloseGraph;
End
Else
begin
 Writeln(’Ошибка графики ’,Er,’. ’+GraphErrorMsg(Er)+
 ’. Нажмите Enter...’);
Readln;
End;
End.
 Похожие публикации: Pascal

Войдите, чтобы добавить Ваш ответ. [ Регистрация | Вход ]