Верхнюю фигуру надо нарисовать от верхнего поля, а нижнюю от конца поля - 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.
Объяснение кода листинга программы
- В начале кода подключаются необходимые библиотеки crt и graph.
- Затем определяются два процедурных блока f1 и f2, которые принимают три параметра: x, y и c (последний параметр представляет собой цвет, используемый в функции setcolor).
- Внутри первого процедурного блока 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); (рисуем полигон из четырех точек)
- Второй процедурный блок f2 аналогичен первому, но использует другой массив p с шестью элементами.
- Далее определяется переменная k, которая будет использоваться для определения направления движения точек.
- Затем в цикле повторяются вызовы процедур f1 и f2 с использованием переменных x, y1 и y2, которые изменяются таким образом, чтобы точки двигались в нужном направлении.
- После каждого цикла проверяется, достигла ли y1 значения 81. Если да, то значение k устанавливается равным 2, что означает смену направления движения. Если нет, то проверяется, достигла ли y1 значения y2. Если да, то значение k устанавливается равным 1, что означает продолжение движения в текущем направлении.
- В конце кода вызываются последние два вызова функций f1 и f2 без параметров, чтобы завершить движение точек.
- Завершается программа вызовом функции outtextXY для вывода сообщения
Exit any key
в указанное место на экране. - Цикл повторяется до тех пор, пока не будет нажата клавиша.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д