Изобразить двигающиеся горизонтально несколько НЛО - Turbo Pascal

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

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

1)Разлетающиеся из центра шарики. Летают с отражением, каждый со своим шагом и разным цветом. 2)Двигающиеся горизонтально несколько НЛО.
2) - не обязательно.

Решение задачи: «Изобразить двигающиеся горизонтально несколько НЛО»

textual
Листинг программы
uses graph,crt;
const n=6;
type shar=record
          x,y,c,dx,dy:integer;
          end;
procedure draw(x,y,c:integer);
begin
setcolor(c);
setfillstyle(1,c);
fillellipse(x,y,10,10);
end;
var s:array[1..n] of shar;
    xc,yc:integer;
    a:real;
    i:integer;
begin
randomize;
initgraph(xc,yc,'');
xc:=getmaxX div 2;
yc:=getmaxY div 2;
{Начальные значения координат, цвета, шага по X и Y}
a:=pi/10;
for i:=1 to n do
 begin
  s[i].x:=xc+round(10*cos(a));
  s[i].y:=yc-round(10*sin(a));
  s[i].c:=i+8;
  draw(s[i].x,s[i].y,s[i].c);
  s[i].dx:=round((3+random(10))*cos(a));
  s[i].dy:=round((3+random(10))*sin(a));
  a:=a+pi/3;
 end;
outtextXY(xc-50,10,'Press Enter');
readln;
cleardevice;
repeat
outtextXY(xc-50,30,'Exit any key');
delay(30);
for i:=1 to n do
 begin
  draw(s[i].x,s[i].y,0);
  s[i].x:=s[i].x+s[i].dx;
  s[i].y:=s[i].y-s[i].dy;
  if (s[i].x<10)or(s[i].x>getmaxX-10)then s[i].dx:=-s[i].dx;
  if (s[i].y<10)or(s[i].y>getmaxY-10)then s[i].dy:=-s[i].dy;
  draw(s[i].x,s[i].y,s[i].c);
 end;
until keypressed;
end.

Объяснение кода листинга программы

  1. Используется библиотека graph и функция initgraph для настройки графического интерфейса.
  2. Переменная n определяет количество объектов НЛО, которые будут нарисованы.
  3. Тип shar представляет объект НЛО с шестью переменными: x, y, c, dx, dy и dx - изменение координаты по оси X, а dy - изменение координаты по оси Y.
  4. Функция draw рисует эллипс на текущей позиции объекта НЛО с заданным цветом.
  5. Переменные xc, yc и a используются для начальной установки координат, цвета и угла поворота для первого объекта НЛО.
  6. Цикл for повторяется n раз, где n - количество объектов НЛО. Внутри цикла каждая переменная s[i] инициализируется значением, полученным из функции randomize, чтобы обеспечить разные начальные позиции для каждого объекта НЛО.
  7. После завершения цикла, функция outtextXY используется для вывода сообщения Press Enter в центр экрана, а затем чтение с клавиатуры до тех пор, пока пользователь не нажмет клавишу.
  8. Последний цикл повторяется до тех пор, пока пользователь не нажмет клавишу, и используется для обновления позиций каждого объекта НЛО. Если позиция объекта выходит за пределы экрана, то значение dx или dy изменяется на противоположное.
  9. Когда все объекты НЛО были нарисованы, функция draw вызывается для каждого объекта, чтобы обновить его позицию.
  10. В конце программы выводится сообщение Exit any key и ожидается ввод пользователя.

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

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