Реализовать двигающийся объект - Pascal
Формулировка задачи:
Составить программу на языке Pascal для решения задачи с использованием типа данных «объект»
Нужно вот этот код сделать с типом данных "объект":
P.s код был написан в TurboPascal
uses crt,graph; label L1,L2; var dt,dm,n,x,y,i:integer; x1,y1:real; begin write('choose: '); write(' 1-Line '); writeln(' 2-circle'); readln(n); clrscr; if n=1 then begin dt:=detect; initgraph(dt,dm,'C:\Program Files\SchoolPak\pak\BP\svga.bgi'); cleardevice; L2: x:=20;y:=240; while x<=620 do begin delay(50); circle(x,y,20); {**¬*«оў*«Ё Є®«®} cleardevice; x:=x+10; delay(50); circle(x,y,20); if x=620 then goto L1; end; L1: x:=620;y:=240; while x>=20 do begin delay(50); circle(x,y,20); cleardevice; x:=x-10; delay(50); circle(x,y,20); if x=20 then goto L2; end; end; if n=2 then begin dt:=detect; initgraph(dt,dm,'C:\Program Files\SchoolPak\pak\BP\svga.bgi'); cleardevice; x1:=300;y1:=100; while 1<2 do begin for i:=1 to 360 do begin delay(10); circle(round(x1),round(y1),20); cleardevice; x1:=round(x1+3*cos(i*3.14/180)); y1:=round(y1+3*sin(i*3.14/180)); delay(10); circle(round(x1),round(y1),20); end; end; end; repeat until keypressed; closegraph; end.
Решение задачи: «Реализовать двигающийся объект»
textual
Листинг программы
{$MODE TP} uses Crt, Graph; type TCircle = object radius: Word; dt, dm: Integer; constructor Init(const radiusP: Word); destructor Done; procedure CLine(const incr: Word); procedure CCircle(const angleIncr: Word); end; constructor TCircle.Init(const radiusP: Word); begin radius := radiusP; dt := detect; InitGraph(dt, dm, 'C:\Program Files\SchoolPak\pak\BP\svga.bgi'); ClearDevice(); end; destructor TCircle.Done; begin CloseGraph; end; procedure TCircle.CLine(const incr: Word); var x, y: Word; begin x := radius + 1; y := GetMaxY div 2; while (GetMaxX >= x + radius + incr) do begin ClearDevice(); Delay(5 * incr); Circle(x, y, radius); Inc(x, incr); Delay(5 * incr); Circle(x, y, radius); end; while (x >= radius + incr) do begin ClearDevice(); Delay(5 * incr); Circle(x, y, radius); Dec(x, incr); Delay(5 * incr); Circle(x, y, radius); end; end; procedure TCircle.CCircle(const angleIncr: Word); var i, x0, y0: Word; rad: Double; begin x0 := GetMaxX div 2; y0 := GetMaxY div 2; if (x0 < y0) then rad := x0 else rad := y0; rad := rad - radius * 1.1; i := 1; while (i <= 360) do begin Delay(10 * angleIncr); Circle(Round(x0 + rad * Sin(i * PI / 180)), Round(y0 + rad * Cos(i * PI / 180)), radius); ClearDevice(); Delay(10 * angleIncr); Circle(Round(x0 + rad * Sin(i * PI / 180)), Round(y0 + rad * Cos(i * PI / 180)), radius); Inc(i); end; end; var circ: TCircle; begin ClrScr; with circ do begin Init(20); CLine(50); CCircle(1); Done; end; end.
Объяснение кода листинга программы
- Объявление типа TCircle:
TCircle
- тип объекта, содержащего переменныеradius
,dt
иdm
, а также конструкторInit
, деструкторDone
и процедурыCLine
иCCircle
.
- Конструктор
Init
:radiusP
- параметр - радиус круга объектаradius
- переменная - присваивается значениеradiusP
dt
- переменная - присваивается значениеdetect
dm
- переменная - не инициализируетсяInitGraph(dt, dm, 'C:\Program Files\SchoolPak\pak\BP\svga.bgi')
- инициализация графического режима со значениямиdt
,dm
и путем к файлуsvga.bgi
ClearDevice()
- очистка графического устройства
- Деструктор
Done
:- Закрытие графического режима
- Процедура
CLine
:incr
- параметр - шаг изменения положения кругаx
,y
- переменные - координаты для рисования круга- Цикл для движения круга по горизонтали и возврату обратно
- Процедура
CCircle
:angleIncr
- параметр - шаг изменения угла в радианахi
,x0
,y0
,rad
- переменные - используются для рисования круга вокруг точки (x0, y0)- Вычисление и рисование круга при увеличении угла на определенный шаг
- Объявление и использование переменной
circ
типаTCircle
:circ
- переменная - создание экземпляра объектаTCircle
Init(20)
- вызов конструктораInit
с параметромradiusP
= 20CLine(50)
- вызов процедурыCLine
с параметромincr
= 50CCircle(1)
- вызов процедурыCCircle
с параметромangleIncr
= 1Done
- вызов деструктораDone
объектаcirc
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д