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

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

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

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

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

textual
Листинг программы
  1. { Движущееся сложное изображение }
  2. program titanik;
  3. uses Graph,
  4.      Crt;
  5. var
  6.  grDriver:integer;  { драйвер }
  7.  grMode:integer;    { графический режим }
  8.  grPath:string;     { место расположения драйвера }
  9.  ErrCode:integer;   { результат инициализации граф. режима }
  10.  
  11.  x,y:integer;  { координаты кораблика }
  12.  color:word;   { цвет кораблика }
  13.  bkcolor:word; { цвет фона экрана }
  14.  
  15.  
  16. { Кораблик }
  17. Procedure Titan(x,y:integer; { координаты базовой точки }
  18.                   color:word); { цвет корабля }
  19. const
  20.   dx=5;
  21.   dy=5;
  22. var
  23.   OldColor:word;
  24. begin
  25.   OldColor:=GetColor; { сохранить текущий цвет }
  26.   SetColor(color);    { установить новый цвет }
  27.  
  28.   {  корпус }
  29.   MoveTo(x,y);
  30.   LineTo(x,y-2*dy);
  31.   LineTo(x+10*dx,y-2*dy);
  32.   LineTo(x+11*dx,y-3*dy);
  33.   LineTo(x+17*dx,y-3*dy);
  34.   LineTo(x+14*dx,y);
  35.   LineTo(x,y);
  36.   { надстройка }
  37.   MoveTo(x+3*dx,y-2*dy);
  38.   LineTo(x+4*dx,y-3*dy);
  39.   LineTo(x+4*dx,y-4*dy);
  40.   LineTo(x+13*dx,y-4*dy);
  41.   LineTo(x+13*dx,y-3*dy);
  42.   Line(x+5*dx,y-3*dy,x+9*dx,y-3*dy);
  43.   { капитанский мостик }
  44.   Rectangle(x+8*dx,y-4*dy,x+11*dx,y-5*dy);
  45.   { труба}
  46.   Rectangle(x+7*dx,y-4*dy,x+8*dx,y-7*dy);
  47.   { иллюминаторы }
  48.   Circle(x+12*dx,y-2*dy,Trunc(dx/2));
  49.   Circle(x+14*dx,y-2*dy,Trunc(dx/2));
  50.   { мачта }
  51.   Line(x+10*dx,y-5*dy,x+10*dx,y-10*dy);
  52.   { оснастка }
  53.   MoveTo(x+17*dx,y-3*dy);
  54.   LineTo(x+10*dx,y-10*dy);
  55.   LineTo(x,y-2*dy);
  56.   SetColor(OldColor); { восстановить текущий цвет }
  57. end;
  58.  
  59. begin
  60.  grDriver := VGA;     { режим VGA}
  61.  grMode:=VGAHi;       { разрешение 640х480}
  62.  grPath:='d:\bp\bgi'; { драйвер, файл EGAVGA.BGI, находится
  63.                         в каталоге d:\bp\bgi }
  64.  
  65.  InitGraph(grDriver, grMode,grPath);
  66.  ErrCode := GraphResult;
  67.  if ErrCode <> grOk then Halt(1);
  68.  
  69.  x:=10;
  70.  y:=200;
  71.  color:=LightGray;
  72.  SetBkColor(Blue);
  73.  bkcolor:=GetBkColor;
  74.  repeat
  75.   Titan(x,y,color);     { нарисовать корабль }
  76.   Delay(50);
  77.   Titan(x,y,bkcolor);   { стереть корабль }
  78.   PutPixel(x,y,color);  { след от корабля }
  79.   x:=x+2;
  80.  until (x>500);
  81.  OutTextXY(10,10,'Reis zavershen!');
  82.  readln;
  83.  CloseGraph;
  84. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы