Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2013, 14:38   #1
Wongraven
 
Регистрация: 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.
Wongraven вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Окружность 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