Нужно перевести код с 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.

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

  1. В начале кода используются необходимые библиотеки graph и crt.
  2. Определяется тип данных point, который представляет точку с координатами x и y.
  3. Определяется процедура Lop, которая принимает на вход координаты центра мельницы (xc, yc), радиус (r) и угол (u0). Она использует массив точек p для создания и рисования треугольника, используя формулы из тригонометрии.
  4. Затем в процедуре Lop устанавливается следующий угол (u) для мельницы, и выполняется цикл, который повторяется 4 раза. На каждой итерации создаются и рисуются точки, а затем угол увеличивается на pi/2.
  5. После завершения цикла в процедуре Lop возвращается точка, которая была первой нарисована, и устанавливается в качестве последней точки.
  6. Затем вызывается функция drawpoly, чтобы нарисовать полигон из этих точек.
  7. В конце кода определяется процедура Meln, которая создает и рисует мельницу аналогичным образом, но с другими параметрами.
  8. Код завершается, пока пользователь не нажимает клавишу.

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

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