Нарисовать простой вентилятор - Turbo Pascal
Формулировка задачи:
Нужна помощь с графикой. Нужно нарисовать простой вентилятор (круг с 2-3 треугольниками внутри) у которого вращение лопастей включается/выключается нажатием клавиши на клавиатуре.
Решение задачи: «Нарисовать простой вентилятор»
textual
Листинг программы
- uses graph,crt;
- type Vent=object
- x,y,r1,r2,cl:integer;{поля: координаты центра вентилятора,
- радиусы, цвет лопастей}
- u:real; {угол поворота лопастей}
- procedure init(ax,ay,ar1,ar2:integer);{создание объекта,
- рисование корпуса}
- procedure lop;{рисование лопастей}
- procedure new_color(acl:integer);{смена цвета лопастей}
- procedure new_angle;{смена угла поворота лопастей}
- end;
- procedure Vent.init(ax,ay,ar1,ar2:integer);
- begin
- x:=ax;
- y:=ay;
- r1:=ar1;
- r2:=ar2;
- cl:=8;
- u:=pi/2;
- setcolor(7);
- setfillstyle(1,7);
- fillellipse(x,y,r1,r1);
- setcolor(14);
- setfillstyle(1,14);
- fillellipse(x,y,r2,r2);
- setcolor(15);
- outtextXY(x-90,10,'1-pusk 2-stop esc-vyhod');
- end;
- procedure Vent.new_color(acl:integer);
- begin
- cl:=acl;
- end;
- procedure Vent.new_angle;
- begin
- u:=u-0.5;
- end;
- procedure Vent.lop;
- var a:real;
- i:byte;
- x1,y1,x2,y2,x3,y3:integer;
- begin
- setcolor(cl);
- setfillstyle(1,cl);
- a:=0;
- for i:=1 to 3 do
- begin
- x1:=x+round((r2+2)*cos(u+a-pi/4));
- y1:=y-round((r2+2)*sin(u+a-pi/4));
- x2:=x+round((r2+2)*cos(u+a+pi/4));
- y2:=y-round((r2+2)*sin(u+a+pi/4));
- x3:=x+round((r1-5)*cos(u+a));
- y3:=y-round((r1-5)*sin(u+a));
- line(x1,y1,x3,y3);
- line(x2,y2,x3,y3);
- circle(x,y,r2+2);
- floodfill(x+round((r2+10)*cos(u+a)),y-round((r2+10)*sin(u+a)),cl);
- a:=a+2*pi/3;
- end;
- end;
- {основная программа}
- var xc,yc:integer;
- v:Vent;
- c:char;
- begin
- initgraph(xc,yc,'');
- xc:=getmaxX div 2;
- yc:=getmaxY div 2;
- v.init(xc,yc,100,30);
- v.lop;
- repeat
- if keypressed then
- begin
- c:=readkey;
- case c of
- '1': repeat
- delay(50);
- v.new_color(7);
- v.lop;
- v.new_angle;
- v.new_color(8);
- v.lop;
- if keypressed then c:=readkey;
- until c in ['2',#27];
- '2':v.lop;
- #27:exit;
- end;
- end;
- until c=#27;
- end.
Объяснение кода листинга программы
- В начале кода подключаются необходимые библиотеки graph и crt.
- Затем определяется тип Vent с полями x, y, r1, r2, cl: integer; u: real;
- Определены четыре процедуры: init, lop, new_color, new_angle.
- В процедуре init рисуется корпус вентилятора с помощью функции fillellipse и устанавливается угол поворота лопастей u = π/2.
- В процедуре lop рисуются лопасти вентилятора с помощью функции setfillstyle, функции fillellipse и функции outtextXY.
- В процедурах new_color и new_angle меняется цвет или угол поворота лопастей соответственно.
- В основной программе создается объект v типа Vent, рисуется его корпус, затем выполняется цикл, в котором при нажатии клавиши 1 меняется цвет лопастей, рисуются лопасти, меняется угол поворота, снова рисуются лопасти, пока не будет нажата клавиша 2.
- В конце программы закрывается графический интерфейс.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д