Есть код проги которая гоняет точку и окружность по экрану случайным образом...до нажатия какой-либо клавиши...не могли вы бы мне помочь ее как то усложнить? К примеру.. Можно изменить цвет окружности и точку(точку вобще хотелось поменять на другую фигуру на пример квадрат который крутится) Менять радиус окружности вообщем размеры фигур(любые действия над фигурами) или поворачивать фигуры против часовой стрелки и наоборот---- и это все может менять пользователь при помощи нажатия какой либо клавиши или меню Программа сделана на принципе модульного программирования!
Создадим модуль графических объектов GraphObj.
Unit GraphObj; {Модуль графических объектов}
INTERFACE {Интерфейсная часть}
Type
PLocation = ^TLocation;
TLocation = object
X,Y: Word; {Координаты позиции на экране}
Constructor Init(InitX, InitY: Word);
{Инициализация объекта}
Function GetX: Word; {Возвращает координату Х}
Function GetY: Word; {Возвращает координату Y}
Procedure GetCoords(Var CoordX, CoordY: Word);
{Возвращает обе координаты}
Destructor Done; virtual; {Уничтожает объект}
End;
PPoint = ^TPoint;
TPoint = object(TLocation)
Clr: Byte; {Цвет}
Visib: Boolean; {Видимость}
Constructor Init(InitX,InitY:Word; InitColor:Byte);
{Переопределяем метод инициализации-добавляем цвет}
Function GetColor: Byte; {Возвращает цвет}
Procedure Show; virtual;
Procedure Hide; virtual;
Function IsVisib: Boolean;
Procedure ChangeColor(NewColor:Byte);{Меняет цвет}
Procedure MoveTo(NewX, NewY: Word);
{Перемещает в новую позицию}
Destructor Done; virtual;
end;
PCircle = ^TCircle;
TCircle = object(TPoint)
R: Word; {Радиус}
Constructor Init(InitX,InitY,InitR:Word;InitC:Byte);
Procedure Show; virtual;
Procedure Hide; virtual;
Destructor Done; virtual;
end;
IMPLEMENTATION {Раздел реализации}
Uses Graph; {Подключаем графическую библиотеку}
Constructor TLocation.Init;
Begin
X := InitX;
Y := InitY
end;
Function TLocation.GetX: Word;
begin
GetX := X
end;
Function TLocation.GetY: Word;
begin
GetY := Y
end;
Procedure TLocation.GetCoords;
begin
CoordX := GetX;
CoordY := GetY
end;
Destructor TLocation.Done;
begin
end;
Constructor TPoint.Init;
begin
inherited Init(InitX, InitY);
Clr := InitColor;
Visib := False
end;
Function TPoint.GetColor: Byte;
begin
GetColor := Clr
end;
Procedure TPoint.Show;
begin
PutPixel(X, Y, Clr);
Visib := True
end;
Procedure TPoint.Hide;
begin
PutPixel(X, Y, GetBkColor);
Visib := False
end;
Function TPoint.IsVisib: Boolean;
begin
IsVisib := Visib
end;
Procedure TPoint.ChangeColor;
begin
Clr := NewColor;
If IsVisib then Show
end;
Procedure TPoint.MoveTo;
Var St: Boolean;
begin
St := IsVisib;
Hide;
X := NewX;
Y := NewY;
If St then Show
end;
Destructor TPoint.Done;
begin
Hide;
Clr := GetBkColor
end;
Constructor TCircle.Init;
begin
inherited Init(InitX, InitY, InitC);
R := InitR
end;
Procedure TCircle.Show;
begin
SetColor(Clr);
Circle(X, Y, R);
Visib := True
end;
Procedure TCircle.Hide;
begin
SetColor(GetBkColor);
Circle(X, Y, R);
Visib := False
end;
Destructor TCircle.Done;
begin
inherited Done;
R := 0
end;
{Пустая секция инициализации}
END.
Основной код проги к которому привязан графический модуль:
В приложении будут созданы экземпляры объектов TPoint и TCircle, причем экземпляр объекта TPoint мы разместим в области динамической памяти.
Program AppExample;
Uses Graph, CRT, GraphObj;
Type
TApplication = object
Procedure Init;
Procedure Run;
Procedure Done;
end;
Var
Application: TApplication;
p: PPoint;
c: TCircle;
Procedure TApplication.Init;
Var
D, R, MaxX, MaxY: Integer;
Begin
{Инициализация графического режима}
D := Detect;
InitGraph(D, R, 'C:\B\BGI');
SetBkColor(White);
ClearDevice;
{Создаем точку и окружность}
MaxX := GetMaxX;
MaxY := GetMaxY;
Randomize;
New(p,Init(Random(MaxX), Random(MaxY),Red));
p^.Show;
c.Init(Random(MaxX-40)+20,Random(MaxY-40)+20,20,Blue);
c.Show
End;
Procedure TApplication.Run;
Var
MaxX, MaxY: Integer;
Begin
MaxX := GetMaxX;
MaxY := GetMaxY;
Repeat
p^.MoveTo(Random(MaxX),Random(MaxY));
c.MoveTo(Random(MaxX-40)+20,Random(MaxY-40)+20);
Delay(4000)
Until KeyPressed
End;
Procedure TApplication.Done;
Begin
Dispose(p,Done);
c.Done;
CloseGraph
End;
BEGIN
Application.Init;
Application.Run;
Application.Done
END.