Движущееся изображения — Pascal(Паскаль)

program titanik;
uses Graph,
     Crt;
var
 grDriver:integer;  { драйвер }
 grMode:integer;    { графический режим }
 grPath:string;     { место расположения драйвера }
 ErrCode:integer;   { результат инициализации граф. режима }

 x,y:integer;  { координаты кораблика }
 color:word;   { цвет кораблика }
 bkcolor:word; { цвет фона экрана }


{ Кораблик }
Procedure Titan(x,y:integer; { координаты базовой точки }
                  color:word); { цвет корабля }
const
  dx=5;
  dy=5;
var
  OldColor:word;
begin
  OldColor:=GetColor; { сохранить текущий цвет }
  SetColor(color);    { установить новый цвет }

  {  корпус }
  MoveTo(x,y);
  LineTo(x,y-2*dy);
  LineTo(x+10*dx,y-2*dy);
  LineTo(x+11*dx,y-3*dy);
  LineTo(x+17*dx,y-3*dy);
  LineTo(x+14*dx,y);
  LineTo(x,y);
  { надстройка }
  MoveTo(x+3*dx,y-2*dy);
  LineTo(x+4*dx,y-3*dy);
  LineTo(x+4*dx,y-4*dy);
  LineTo(x+13*dx,y-4*dy);
  LineTo(x+13*dx,y-3*dy);
  Line(x+5*dx,y-3*dy,x+9*dx,y-3*dy);
  { капитанский мостик }
  Rectangle(x+8*dx,y-4*dy,x+11*dx,y-5*dy);
  { труба}
  Rectangle(x+7*dx,y-4*dy,x+8*dx,y-7*dy);
  { иллюминаторы }
  Circle(x+12*dx,y-2*dy,Trunc(dx/2));
  Circle(x+14*dx,y-2*dy,Trunc(dx/2));
  { мачта }
  Line(x+10*dx,y-5*dy,x+10*dx,y-10*dy);
  { оснастка }
  MoveTo(x+17*dx,y-3*dy);
  LineTo(x+10*dx,y-10*dy);
  LineTo(x,y-2*dy);
  SetColor(OldColor); { восстановить текущий цвет }
end;

begin
 grDriver := VGA;     { режим VGA}
 grMode:=VGAHi;       { разрешение 640х480}
 grPath:='d:\bp\bgi'; { драйвер, файл EGAVGA.BGI, находится
                        в каталоге d:\bp\bgi }

 InitGraph(grDriver, grMode,grPath);
 ErrCode := GraphResult;
 if ErrCode <> grOk then Halt(1);

 x:=10;
 y:=200;
 color:=LightGray;
 SetBkColor(Blue);
 bkcolor:=GetBkColor;
 repeat
  Titan(x,y,color);     { нарисовать корабль }
  Delay(100);
  Titan(x,y,bkcolor);   { стереть корабль }
  PutPixel(x,y,color);  { след от корабля }
  x:=x+2;
 until (x>500);
 OutTextXY(10,10,'Рейс завершен!');
 readln;
 CloseGraph;
end.

Leave a Comment