Пример 8.7.
Программа рисует человечка, делающего утреннюю зарядку.
Демонстрация
Внимание: будет работать только если Turbo Pascal установлен в каталог C:\TP и каталог C:\TP\BGI содержит необходимый файл egavga.bgi.
Program Animation;
Uses Crt, Graph;
{подключение к программе библиотек Crt и Graph}
Const {вертикальные и горизонтальные координаты положения рук}
Vert : Array[1..3] of Integer = (190, 157, 120);
Horizont : Array[1..3] of Integer = (200, 190, 200);
Var
GrDriver, GrMode, GrError, i, j : Integer;
BEGIN
GrDriver := Detect; InitGraph(GrDriver, GrMode, 'C:\TP\BGI');
GrError := GraphResult; If GrError <> GrOk then Halt;
SetColor(LightGray); { установка светлосерого цвета для рамки}
Rectangle(20, 20, 480, 400); {рисование рамки}
SetColor(LightCyan); {установка яркоголубого цвета для текста}
OutTextXY(200, 40, 'П Р И В Е Т !');
SetColor(LightGray); Circle (250, 130, 20); {голова}
SetColor(Yellow); Arc(250, 130, 0, 180, 26); {волосы}
Arc(250, 130, 0, 180, 24); Arc(250, 130, 0, 180, 22);
Line(250, 105, 244, 115); Line(250, 105, 250, 116); {чубчик}
Line(250, 105, 256, 115);
SetColor(LightCyan); Circle(241, 125, 4); {левый глаз }
Circle(259, 125, 4); {правый глаз}
SetColor(LightRed);
SetFillStyle(SolidFill, LightRed);
FillEllipse(250, 140, 6, 3); {рот }
Setcolor(Green);
Line(250, 152, 250, 220); {туловище }
Line(250, 220, 210, 290); {левая нога }
Line(250, 220, 290, 290); {правая нога}
Repeat {цикл прерывается нажатием любой клавиши}
For i := 1 to 3 do {Последовательный вывод трех положений рук:}
begin { вниз, на уровне плеч, вверх }
SetColor(LightCyan); Sound(200*i);
Line(250, 157, Horizont[i], Vert[i]); {левая рука}
Line(250, 157, 500-Horizont[i], Vert[i]); {правая рука}
Delay(300); {задержка}
SetColor(Black); {смена цвета на черный для повторного
pисования рук в том же положении
("стирания" их с экрана) }
Line(250, 157, Horizont[i], Vert[i]); {левая рука }
Line(250, 157, 500-Horizont[i], Vert[i]); {правая рука}
end
until Keypressed;
SetColor(LightCyan);
Line(250, 157, Horizont[3], Vert[3]); {левая рука поднята }
Line(250, 157, 500-Horizont[3], Vert[3]); {правая рука поднята}
For i := 1 to 10 do { звуковая трель }
begin
Sound(1000);
Delay(50);
Sound(1500);
Delay(50)
end;
NoSound; { выключение звука }
CloseGraph;
END.