Изобразить, как одна точка догоняет другую - 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.
Объяснение кода листинга программы
- В начале кода подключаются необходимые библиотеки crt и graph.
- Создается процедура tochka, которая принимает на вход координаты точки x, y, цвет (переменная c) и текст (переменная s). Внутри процедуры рисуется окружность с заданными параметрами и выводится текст на ее центр.
- Создаются переменные x1, y1, x2, y2 типа longint для хранения координат двух точек.
- Создаются переменные dx1, dy1, dx2, dy2 типа integer для хранения изменений координат по оси x и y при каждом шаге анимации.
- Создается переменная r типа real для хранения расстояния между двумя точками.
- Запускается цикл, который повторяется бесконечное количество раз. Внутри цикла сначала вызывается функция tochka для первой точки, затем для второй точки.
- После каждого вызова функции tochka выполняется задержка на 100 мс.
- В каждой итерации цикла вычисляется расстояние между двумя точками с помощью формулы r = sqrt(sqr(x1 - x2) + sqr(y1 - y2)).
- Если расстояние больше нуля, то обновляются координаты второй точки с помощью формул dx2 = round((x1 - x2) 5/r), dy2 = round((y1 - y2) 5/r).
- После обновления координат вызывается функция tochka для обновленной точки.
- После завершения каждой итерации цикла выводится cleardevice, чтобы очистить экран перед следующим кадром анимации.
- В конце кода выводится текст
нарисуем место встречи
и вызывается функция tochka для точек x1+6, y1 и x2, y2. - Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д