|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.06.2013, 14:38 | #1 |
Регистрация: 25.03.2013
Сообщений: 4
|
Окружность
Задачка состоит в том, чтобы окружность заданного цвета двигалась по окружности. Есть примерный набросок, но там вероятны ошибки, пишет что-то на указатель и на счет правильности окружности тоже не уверен. Если кто знает как исправить, помогите плиз. Спасибо.
Program lab 7; uses Graph,Crt; TYPE TMesto=Object{Mesto} x,y:Integer; Constructor Init(initx,inity:Integer); Destructor Done; End; TPoint=Object(TMesto){Tochka} Procedure Show(color:BYTE);Virtual; Procedure Hide;Virtual; Procedure MoveTo(newx,newy:Integer;color:BYTE ); End; TCircle=Object(TPoint){Circle} radius:Integer; Constructor Init(initx,inity:Integer); Procedure Show(color:BYTE); Virtual; Procedure Hide; Virtual; End; TGraph=Object {Gpaphica} grdriver:Integer; grmode:Integer; Procedure Init(gd,gm:Integer;path:STRING); Procedure Fin; End; TPCircle=^TCircle; {mesto} Constructor TMesto.Init(initx,inity:Integer); Begin x:=initx; y:=inity; End; Destructor TMesto.Done; Begin WriteLn; End; {tochka} Procedure TPoint.Show(color:BYTE); Begin PutPixel(x,y,color); End; Procedure TPoint.Hide; Begin PutPixel(x,y,GetBkColor); End; Procedure TPoint.MoveTo(newx,newy:Integer;col or:BYTE); Begin Hide; x:=newx; y:=newy; Show(color); End; {grafika} Procedure TGraph.Init(gd,gm:Integer;path:STRI NG); Begin grdriver:=gd; grmode:=gm; IniTGraph(grdriver,grmode,path); End; Procedure TGraph.Fin; Begin CloseGraph; End; {Circle} Constructor TCircle.Init(initx,inity:Integer); Begin TPoint.Init(initx,inity); End; Procedure TCircle.Show(color:BYTE); Begin SetColor(Color); SetFillStyle(1,color); line(x,y,x-round(30*cos(pi/2)),y-round(30*sin(pi/2))); line(x,y,x+round(30*cos(pi/2)),y-round(30*sin(pi/2))); line(x-round(30*cos(pi/2)),y-round(30*sin(pi/2)),x+round(30*cos(pi/2)),y-round(30*sin(pi/2))); End; Procedure TCircle.Hide; Begin SetColor(GetBkColor); SetFillStyle(1,GetBkColor); line(x,y,x-round(150*cos(pi/2)),y-round(150*sin(pi/2))); line(x,y,x+round(150*cos(pi/2)),y-round(150*sin(pi/2))); line(x-round(30*cos(pi/2)),y-round(30*sin(pi/2)),x+round(30*cos(pi/2)),y-round(30*sin(pi/2))); End; VAR pc:TCircle; world:TGraph; x,y:Integer; col:Byte; radius:integer; Begin ClrScr; WriteLn('Dvijenie okryjnosti po okryjnosti'); WriteLn('Vvedite cvet okryjnosti ot 1 do 15'); ReadLn(col); WriteLn('Press ENTER'); ReadLn; World.Init(DETECT,DETECT,'C:\TP\BGI '); x:=50; y:=GetMaxY-50; New(pc,Init(x,y)); pc^.Show(col); REPEAT Delay(100); x:=x+round(150*cos(pi/2)); y:=y-round(150*sin(pi/2)); pc^.MoveTo(x,y,col); UNTIL y<=25; Dispose(pc,DONE); World.Fin; readln; End. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Окружность | Murashov | Общие вопросы C/C++ | 14 | 01.11.2012 20:44 |
Окружность | Ins1De | Общие вопросы C/C++ | 2 | 29.11.2011 12:15 |
окружность | MetR | Помощь студентам | 1 | 08.01.2011 13:05 |
Пунктирная окружность | Гамбит | Помощь студентам | 3 | 13.03.2010 14:39 |
Окружность.. | surovii | Помощь студентам | 28 | 29.03.2009 18:00 |