Нужно перевести код с Pascal ABC на Turbo Pascal - рисование работающей мельницы
Формулировка задачи:
Вот код, он должен рисовать работающею мельницу.
Решение задачи: «Нужно перевести код с Pascal ABC на Turbo Pascal - рисование работающей мельницы»
textual
Листинг программы
uses graph,crt; type point=record x,y:integer; end; procedure Lop(xc,yc,r,c:integer;u0:real); var p:array[1..13] of point; i:integer; u,du:real; begin u:=pi/4;du:=u/4; for i:=1 to 4 do begin p[3*i-2].x:=xc; p[3*i-2].y:=yc; p[3*i-1].x:=xc+round(r*cos(u0+u-du)); p[3*i-1].y:=yc-round(r*sin(u0+u-du)); p[3*i].x:=xc+round(r*cos(u0+u+du)); p[3*i].y:=yc-round(r*sin(u0+u+du)); u:=u+pi/2; end; p[13]:=p[1]; setcolor(c); drawpoly(13,p); {почему-то полигон не рисует одну линию, в АВС все рисует, поэтому добавим} line(p[4].x,p[4].y,p[5].x,p[5].y); end; procedure Meln(xc,yc,r,c:integer); var p:array[1..5] of point; i:integer; begin p[1].x:=xc-r div 3;p[1].y:=yc-r div 10; p[2].x:=xc+r div 3;p[2].y:=yc-r div 10; p[3].x:=xc+2*r div 2;p[3].y:=yc+2*r; p[4].x:=xc-2*r div 2;p[4].y:=yc+2*r; p[5].x:=p[1].x;p[5].y:=p[1].y; setcolor(c); drawpoly(5,p); end; var x,y,r:integer; u:real; begin initgraph(x,y,''); r:=150; x:=getmaxX div 2; y:=r+10; u:=0; repeat Meln(x,y,r,12); Lop(x,y,r,15,u); delay(100); Meln(x,y,r,0); Lop(x,y,r,0,u); u:=u+pi/16; until keypressed; end.
Объяснение кода листинга программы
- В начале кода используются необходимые библиотеки graph и crt.
- Определяется тип данных point, который представляет точку с координатами x и y.
- Определяется процедура Lop, которая принимает на вход координаты центра мельницы (xc, yc), радиус (r) и угол (u0). Она использует массив точек p для создания и рисования треугольника, используя формулы из тригонометрии.
- Затем в процедуре Lop устанавливается следующий угол (u) для мельницы, и выполняется цикл, который повторяется 4 раза. На каждой итерации создаются и рисуются точки, а затем угол увеличивается на pi/2.
- После завершения цикла в процедуре Lop возвращается точка, которая была первой нарисована, и устанавливается в качестве последней точки.
- Затем вызывается функция drawpoly, чтобы нарисовать полигон из этих точек.
- В конце кода определяется процедура Meln, которая создает и рисует мельницу аналогичным образом, но с другими параметрами.
- Код завершается, пока пользователь не нажимает клавишу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д