IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Турбо Паскаль и его объектно ориентированные средства, Объектно-ориентированные приложения
сообщение
Сообщение #1


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


Снова я( я всем наверно надоел(со своими темами)

Есть код проги которая гоняет точку и окружность по экрану случайным образом...до нажатия какой-либо клавиши...не могли вы бы мне помочь ее как то усложнить? К примеру.. Можно изменить цвет окружности и точку(точку вобще хотелось поменять на другую фигуру на пример квадрат который крутится) Менять радиус окружности вообщем размеры фигур(любые действия над фигурами) или поворачивать фигуры против часовой стрелки и наоборот---- и это все может менять пользователь при помощи нажатия какой либо клавиши или меню Программа сделана на принципе модульного программирования!

Создадим модуль графических объектов 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
dron4ik   Турбо Паскаль и его объектно ориентированные средства   10.05.2009 2:47
Lapp   [b]dron4ik, почему тема про Турбо Паскаль в раздел…   10.05.2009 10:31
volvo   Программа неправильно написана с использованием ОО…   10.05.2009 12:44
dron4ik   Извините а куда перенесена тема?( В какой раздел?(…   10.05.2009 12:47
Lapp   Извините а куда перенесена тема?( В какой раздел?(…   10.05.2009 12:52
dron4ik   Я иммею ввиду задачу. Добавлено через 4 мин. От…   10.05.2009 12:53
Lapp   От какой фигуры они могут наследоваться(квадрат, о…   10.05.2009 13:39
dron4ik   У меня есть другая программа написанная на СИ++ . …   10.05.2009 13:36
dron4ik   У меня есть другая программа написанная на СИ++ . …   10.05.2009 13:42
Lapp   У меня есть другая программа написанная на СИ++Ну …   10.05.2009 13:59
dron4ik   Извините( Мне просто не с кем посоветоваться( Доб…   10.05.2009 14:05
volvo   Вершины и ребра - отдельные классы, не являющиеся …   10.05.2009 14:25
dron4ik   Т.е есть программа написанная по такому принципу н…   10.05.2009 14:30
volvo   Программа написанная по КАКОМУ принципу? Где ? Объ…   10.05.2009 14:49
dron4ik   Мне вообщем нужно чтобы прога была написана по ООП…   10.05.2009 14:52


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 4.09.2025 15:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name