Иллюстрированный самоучитель по Turbo Pascal для начинающих

Решения (задачи 217-221)

Задача 217

{ Движущееся сложное изображение }
uses Graph, Crt;
var
grDriver:integer; { драйвер } grMode:integer; { графический режим }
grPath:string; { место расположения драйвера }
ErrCode:integer; { результат инициализации граф. режима }
х,у:integer; { координаты кораблика }
color:word; { цвет кораблика } bkcolor:word; { цвет фона экрана }
{ Кораблик }
Procedure Titanik(x,у:integer; color:word); const
dx=5;
dy=5;
координаты базовой точки } цвет корабля }
var
01dColor:word; begin
01dColor: = GetColor; { сохранить текущий цвет)
SetColor(color); { установить новый цвет }
{ корпус } MoveTo(x,y); LineTo(x,y-2*dy); LineTo(x+10*dx,y-2*dy);
LineTo(x+ll*dx,y-3*dy); LineTo(x+17*dx,y-3*dy); LineTo(x+14*dx,у);
LineTo(x,у); { надстройка } 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+ll*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; grMode: = VGAHi; grPath: = 'e:\tp\bgi¦;
режим VGA}
разрешение 640x480}
драйвер, файл EGAVGA.BGI, находится
в каталоге d:\tp\bgi }
tGraph(grDriver, grMode,grPath);
ErrCode: = GraphResult;
if ErrCode о grOk then HALT(l);
x: = 10;
y: = 200;
color: = LightGray;
SetBkColor(Blue);
bkcolor: = GetBkColor;
repeat
Titanik(x,y,color);
Delay(lOO);
Titanik(x,y,bkcolor); { стереть корабль }
PutPixel(x,y,color); { след от корабля }
x: = x+2;
until (x>500);
OutTextXY(10.10,'Рейс завершен!'); readln; CloseGraph; end.
нарисовать корабль }
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.