Написать программу, которая рисует движущийся по экрану кораблик - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Помогите пожааалуйста 1. Написать программу, которая рисует движущийся по экрану кораблик 2. Напишите программу, обеспечивающую управление с помощью клавиатуры положением выведенного на экран прямоугольника 3. Написать программу, которая выводит на экран изображение работающего светофора. Алгоритм работы светофора: красный – красный + желтый – зеленый – мигающий зеленый

Решение задачи: «Написать программу, которая рисует движущийся по экрану кораблик»

textual
Листинг программы
{ Движущееся сложное изображение }
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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы