[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 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.
 

[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]