Изобразить, как одна точка догоняет другую - Turbo Pascal

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

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

Здравствуйте! Подскажите, пожалуйста, как реализовать следующее: Две точки появляются на расстоянии друг от друга, одна точка идет по какой-то траектории, а вторая догоняет ее по кратчайшему пути. Точки движутся с заданной скоростью...

Решение задачи: «Изобразить, как одна точка догоняет другую»

textual
Листинг программы
uses crt,graph;
procedure tochka(x,y,c:integer;s:string);
begin
setcolor(c);
circle(x,y,2);
setfillstyle(1,c);
floodfill(x,y,c);
outtextXY(x,y-10,s);
end;
var x1,y1,x2,y2:longint;
    dx1,dy1,dx2,dy2:integer;
    r:real;
begin
initgraph(dx1,dy1,'');
x1:=50;y1:=50;
dx1:=3;
x2:=getmaxX div 2;y2:=getmaxY-100;
tochka(x1,y1,9,'1');
tochka(x2,y2,10,'2');
repeat
delay(100);
tochka(x1,y1,0,'1');
tochka(x2,y2,0,'2');
r:=sqrt(sqr(x1-x2)+sqr(y1-y2));
if r>0 then
 begin
  dx2:=round((x1-x2)*5/r);
  dy2:=round((y1-y2)*5/r);
  x1:=x1+dx1;
  x2:=x2+dx2;y2:=y2+dy2;
  tochka(x1,y1,9,'1');
  tochka(x2,y2,10,'2');
 end;
until r<=0;
{нарисуем место встречи}
cleardevice;
tochka(x1+6,y1,9,'1');
tochka(x2,y2,10,'2');
readln
end.

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

  1. В начале кода подключаются необходимые библиотеки crt и graph.
  2. Создается процедура tochka, которая принимает на вход координаты точки x, y, цвет (переменная c) и текст (переменная s). Внутри процедуры рисуется окружность с заданными параметрами и выводится текст на ее центр.
  3. Создаются переменные x1, y1, x2, y2 типа longint для хранения координат двух точек.
  4. Создаются переменные dx1, dy1, dx2, dy2 типа integer для хранения изменений координат по оси x и y при каждом шаге анимации.
  5. Создается переменная r типа real для хранения расстояния между двумя точками.
  6. Запускается цикл, который повторяется бесконечное количество раз. Внутри цикла сначала вызывается функция tochka для первой точки, затем для второй точки.
  7. После каждого вызова функции tochka выполняется задержка на 100 мс.
  8. В каждой итерации цикла вычисляется расстояние между двумя точками с помощью формулы r = sqrt(sqr(x1 - x2) + sqr(y1 - y2)).
  9. Если расстояние больше нуля, то обновляются координаты второй точки с помощью формул dx2 = round((x1 - x2) 5/r), dy2 = round((y1 - y2) 5/r).
  10. После обновления координат вызывается функция tochka для обновленной точки.
  11. После завершения каждой итерации цикла выводится cleardevice, чтобы очистить экран перед следующим кадром анимации.
  12. В конце кода выводится текст нарисуем место встречи и вызывается функция tochka для точек x1+6, y1 и x2, y2.
  13. Конец программы.

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


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

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

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