Смоделировать движение окружности по внешней границе квадрата - Turbo Pascal

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

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

Смоделировать движение окружности, по внешней границе квадрата!!! ХЭЛЛЛЛЛПППП

Решение задачи: «Смоделировать движение окружности по внешней границе квадрата»

textual
Листинг программы
uses graph,crt;
var x1,y1,x2,y2,x,y,r,xc,yc:integer;
    u:real;
begin
initgraph(x1,y1,'');
x1:=getmaxX div 2-100;
x2:=getmaxX div 2+100;
y1:=getmaxY div 2-100;
y2:=getmaxY div 2+100;
setcolor(14);
setlinestyle(0,0,3);
rectangle(x1+3,y1+3,x2-3,y2-3);
outtextXY(getmaxX div 2-50,20,'Exit any key');
x:=x1;
r:=10;
y:=y1-r;
repeat
while (x<x2)and not keypressed do
 begin
  setcolor(12);
  circle(x,y,r);
  delay(50);
  setcolor(0);
  circle(x,y,r);
  x:=x+2;
 end;
xc:=x2;
yc:=y+r;
u:=pi/2;
while(u>0)and not keypressed do
 begin
  setcolor(12);
  circle(x,y,r);
  delay(50);
  setcolor(0);
  circle(x,y,r);
  x:=xc+round(r*cos(u));
  y:=yc-round(r*sin(u));
  u:=u-0.3;
 end;
while (y<y2)and not keypressed do
 begin
  setcolor(12);
  circle(x,y,r);
  delay(50);
  setcolor(0);
  circle(x,y,r);
  y:=y+2;
 end;
xc:=x-r;
yc:=y2;
u:=0;
while(u>-pi/2)and not keypressed do
 begin
  setcolor(12);
  circle(x,y,r);
  delay(30);
  setcolor(0);
  circle(x,y,r);
  x:=xc+round(r*cos(u));
  y:=yc-round(r*sin(u));
  u:=u-0.3;
 end;
while (x>x1)and not keypressed do
 begin
  setcolor(12);
  circle(x,y,r);
  delay(50);
  setcolor(0);
  circle(x,y,r);
  x:=x-2;
 end;
xc:=x1;
yc:=y-r;
u:=-pi/2;
while(u>-pi)and not keypressed do
 begin
  setcolor(12);
  circle(x,y,r);
  delay(30);
  setcolor(0);
  circle(x,y,r);
  x:=xc+round(r*cos(u));
  y:=yc-round(r*sin(u));
  u:=u-0.3;
 end;
while (y>y1)and not keypressed do
 begin
  setcolor(12);
  circle(x,y,r);
  delay(50);
  setcolor(0);
  circle(x,y,r);
  y:=y-2;
 end;
xc:=x+r;
yc:=y1;
u:=pi;
while(u>pi/2)and not keypressed do
 begin
  setcolor(12);
  circle(x,y,r);
  delay(30);
  setcolor(0);
  circle(x,y,r);
  x:=xc+round(r*cos(u));
  y:=yc-round(r*sin(u));
  u:=u-0.3;
 end;
until keypressed;
readln
end.

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

Этот код моделирует движение окружности по внешней границе квадрата. Давайте разберем его по шагам:

  1. Используются библиотеки graph и crt, которые необходимы для работы с графиком и выводом текста на экран соответственно.
  2. Переменные x1, y1, x2, y2 и r инициализируются значениями, полученными от функции getmaxX, getmaxY и div соответственно. Эти значения определяют максимальные координаты по оси X и Y, а также радиус окружности.
  3. Устанавливается стиль линии с помощью функции setlinestyle. В данном случае используется стиль с тремя линиями.
  4. Выводится текст на экран с помощью функции outtextXY. Текст будет выводиться в центре экрана.
  5. Переменные x, y и r инициализируются средними значениями между x1, x2, y1 и y2. Это начальные координаты для движения окружности.
  6. Запускается цикл, который будет выполняться до тех пор, пока окружность не пересечет внешнюю границу квадрата.
  7. Внутри цикла окружность рисуется с помощью функции circle. Цвет окружности меняется с помощью функции setcolor. Сначала окружность рисуется с цветом 12 (белый), затем с цветом 0 (черный).
  8. После каждого рисунка окружности выполняется задержка с помощью функции delay. Это нужно для того, чтобы окружность не исчезала сразу, а была видна на экране.
  9. После завершения цикла окружность рисуется еще несколько раз с новыми координатами, чтобы создать эффект движения.
  10. После этого выполняются последние несколько шагов, которые аналогичны началу цикла.
  11. В конце программы с помощью функции readln происходит чтение ввода пользователя, чтобы программа завершилась после того, как пользователь нажмет клавишу.

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


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

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

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