Верхнюю фигуру надо нарисовать от верхнего поля, а нижнюю от конца поля - Turbo Pascal

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

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

Задание Что касается задания,значит верхнюю фигуру надо нарисовать от верхнего поля, а нижнюю от конца поля. Потом надо их сдвигать друг к другу, после того как они сойдутся, они должны разойтись.

Решение задачи: «Верхнюю фигуру надо нарисовать от верхнего поля, а нижнюю от конца поля»

textual
Листинг программы
uses crt,graph;
procedure f1(x,y,c:integer);
var p:array[1..4]of pointtype;
begin
p[1].x:=x;
p[1].y:=y;
p[2].x:=x-40;
p[2].y:=y-20;
p[3].x:=x+40;
p[3].y:=y-20;
p[4]:=p[1];
setcolor(c);
drawpoly(4,p);
end;
procedure f2(x,y,c:integer);
var p:array[1..6] of pointtype;
begin
p[1].x:=x;
p[1].y:=y;
p[2].x:=x-40;
p[2].y:=y-20;
p[3].x:=x-40;
p[3].y:=y+20;
p[4].x:=x+40;
p[4].y:=y+20;
p[5].x:=x+40;
p[5].y:=y-20;
p[6]:=p[1];
setcolor(c);
drawpoly(6,p);
end;
var x,y1,y2,k:integer;
begin
initgraph(x,y1,'');
x:=getmaxX div 2;
y1:=80;
y2:=getmaxY-80;
outtextXY(x-50,10,'Exit any key');
repeat
f1(x,y1,14);
f2(x,y2,14);
delay(50);
f1(x,y1,0);
f2(x,y2,0);
if y1<=81 then k:=2
else if y1>=y2 then k:=1;
case k of
2:begin
  y1:=y1+5;
  y2:=y2-5;
  end;
1:begin
  y1:=y1-5;
  y2:=y2+5;
  end;
end;
f1(x,y1,14);
f2(x,y2,14);
until keypressed;
end.

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

  1. В начале кода подключаются необходимые библиотеки crt и graph.
  2. Затем определяются два процедурных блока f1 и f2, которые принимают три параметра: x, y и c (последний параметр представляет собой цвет, используемый в функции setcolor).
  3. Внутри первого процедурного блока f1 переменная p инициализируется массивом типа pointtype, состоящим из четырех элементов. Каждый элемент имеет координаты x и y. Затем выполняется следующие действия:
    • p[1].x = x;
    • p[1].y = y;
    • p[2].x = x - 40;
    • p[2].y = y - 20;
    • p[3].x = x + 40;
    • p[3].y = y - 20;
    • p[4] = p[1]; (сохраняем координаты первого элемента в четвертом элементе массива)
    • setcolor(c);
    • drawpoly(4, p); (рисуем полигон из четырех точек)
  4. Второй процедурный блок f2 аналогичен первому, но использует другой массив p с шестью элементами.
  5. Далее определяется переменная k, которая будет использоваться для определения направления движения точек.
  6. Затем в цикле повторяются вызовы процедур f1 и f2 с использованием переменных x, y1 и y2, которые изменяются таким образом, чтобы точки двигались в нужном направлении.
  7. После каждого цикла проверяется, достигла ли y1 значения 81. Если да, то значение k устанавливается равным 2, что означает смену направления движения. Если нет, то проверяется, достигла ли y1 значения y2. Если да, то значение k устанавливается равным 1, что означает продолжение движения в текущем направлении.
  8. В конце кода вызываются последние два вызова функций f1 и f2 без параметров, чтобы завершить движение точек.
  9. Завершается программа вызовом функции outtextXY для вывода сообщения Exit any key в указанное место на экране.
  10. Цикл повторяется до тех пор, пока не будет нажата клавиша.

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

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