Написать программу, которая рисует движущийся по экрану кораблик - Turbo 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(50);
- Titan(x,y,bkcolor); { стереть корабль }
- PutPixel(x,y,color); { след от корабля }
- x:=x+2;
- until (x>500);
- OutTextXY(10,10,'Reis zavershen!');
- readln;
- CloseGraph;
- end.
Объяснение кода листинга программы
{ Движущееся сложное изображение } program titanik; uses Graph, Crt; var grDriver: integer; grMode: integer; grPath: string; ErrCode: integer; var x, y: integer; color: word; bkcolor: word; const dx = 5; dy = 5; var OldColor: word; begin OldColor := GetColor; SetColor(color); end; 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); // ... и так далее для создания корпуса корабля end; begin grDriver := VGA; grMode := VGAHi; grPath := '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(50); Titan(x, y, bkcolor); PutPixel(x, y, color); x := x + 2; until (x > 500); OutTextXY(10, 10, 'Reis zavershen!'); readln; CloseGraph; end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д