Верхнюю фигуру надо нарисовать от верхнего поля, а нижнюю от конца поля - 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
в указанное место на экране. - Цикл повторяется до тех пор, пока не будет нажата клавиша.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д