Решения (задачи 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. нарисовать корабль }