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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2012, 18:10   #1
DeadWind
Пользователь
 
Регистрация: 17.12.2011
Сообщений: 14
По умолчанию ООП графический объект

помогите решить пожалуйста!
http://pix.academ.org/img/2012/10/27...daaf834a36.jpg
http://pix.academ.org/img/2012/10/27...44435614ab.jpg
хотя бы 1 рисунок, остальное наверное сам смогу дополнить разобравшись

пример


UNIT FiguresABC;
INTERFACE
USES GraphABC, CRT;
TYPE
{ Класс TLocation будет родителем для иерархии графических объектов }
TLocation = CLASS
{ Первыми в объекте перечисляются данные }
X,Y : INTEGER; { координаты характерной точки }
{ За данными описываются применяемые к ним правила }
PROCEDURE SetLocation (NewX,NewY : integer);
{ Задает новое положение характерной точки }
PROCEDURE GetLocation (var XLoc, YLoc : integer);
{ возвращает координаты характерной точки }
END; { Конец описания объекта TLocation }

TPoint = CLASS(TLocation)
{ Класс TPoint служит для описания точки.
Он является потомком указанного в скобках класса TLocation.}
COLOR : Integer; { цвет графической фигуры }
CONSTRUCTOR SetPoint(NewX,NewY,NewColor : integer); { задает точку }
PROCEDURE SetColor (NewColor : integer); { устанавливает цвет фигуры }
FUNCTION GetColor : integer; { возвращает цвет фигуры }
PROCEDURE Show; { делает точку видимой }
PROCEDURE Hide ; { делает точку невидимой }
PROCEDURE Drag (DragBy : integer);
END; { Конец описания объекта TPoint }

TCircle = CLASS(TPoint)
{ Класс TCircle служит для описания окружности }
Radius : word; { радиус окружности }
Constructor Create (NewX,NewY : integer; NewRadius : word;
NewColor : integer);
{ задает окружность }
PROCEDURE Show; { делает окружность видимой }
PROCEDURE Hide; { делает окружность невидимой }
END; { Конец класса TCIRCLE }
{ ------------------------------------------------ }

IMPLEMENTATION
PROCEDURE TLocation.SetLocation (NewX,NewY : integer);
BEGIN
X:=NewX; Y:=NewY;
END;
{ --------------------------------------------------- }
PROCEDURE TLocation.GetLocation (var XLoc,YLoc : integer);
BEGIN
XLoc:=X; YLoc:=Y
END;
{ --------------------------------------------------- }
CONSTRUCTOR TPoint.SetPoint(NewX,NewY,NewColor : integer);
BEGIN
SetLocation(NewX,NewY); SetColor(NewColor)
END;
{ --------------------------------------------------- }
PROCEDURE TPoint.SetColor (NewColor : integer);
BEGIN
Color:=NewColor
END;
{ --------------------------------------------------- }
FUNCTION TPoint.GetColor : integer;
BEGIN
GetColor:=Color
END;
{ --------------------------------------------------- }
PROCEDURE TPoint.Show; { делает точку видимой }
{ реализация правила SHOW для объекта TPoint }
BEGIN
SetPixel(X,Y,Color);
END;
{ --------------------------------------------------- }
PROCEDURE TPoint.Hide;
{ реализация правила HIDE для объекта TPoint }
BEGIN
SetPixel(X,Y,BrushColor);
END;
{ --------------------------------------------------- }
FUNCTION GetDelta (var DeltaX,DeltaY : integer) : Boolean;
{ Функция считывает состояние клавиатуры. Если нажата
клавиша управления курсором, функция возвращает значение TRUE,
при этом в параметрах вызова передаются признаки приращения
координат характерной точки. Если нажата клавиша "Ввод",
функция возвращает FALSE.
Нажатие на любую другую клавишу игнорируется. }
var Quit : Boolean; { признак необходимости завершения работы }
BEGIN { GetDelta }
GetDelta:=true;
repeat
DeltaX:=0; DeltaY:=0; Quit:=true;
case ReadKey of
#0 : case ReadKey of { код из расширенного набора }
#72 : DeltaY:=-1; { стрелка вверх }
#80 : DeltaY:=+1; { стрелка вниз }
#77 : DeltaX:=-1; { стрелка влево }
#75 : DeltaX:=+1; { стрелка вправо }
else Quit:=false { другие клавиши игнорировать }
end { #0 };
#13: GetDelta:=false; { клавиша "Ввод" }
else Quit:=false; { другие клавиши игнорировать }
end { case }
until Quit
END ; { GetDelta }
{ --------------------------------------------------- }
продолжение ниже
DeadWind вне форума Ответить с цитированием
Старый 27.10.2012, 18:10   #2
DeadWind
Пользователь
 
Регистрация: 17.12.2011
Сообщений: 14
По умолчанию

PROCEDURE TPoint.Drag(DragBy : integer);
{ Перемещает любую графическую фигуру по экрану }
var DeltaX,DeltaY : integer; PosX,PosY : integer;
BEGIN { TPoint.Drag }
Show; { Показать исходное положение фигуры }
while GetDelta(DeltaX,DeltaY) do { цикл перемещения }
begin Hide; { погасить изображение фигуры }
GetLocation(PosX,PosY);
SetLocation(PosX+DeltaX*DragBy,PosY +DeltaY*DragBy);
{ изменить координаты }
Show { показать новое положение фигуры }
end
END; { TPoint.Drag }
{ --------------------------------------------------- }
CONSTRUCTOR TCircle.Create(NewX,NewY :integer;
NewRadius : word; NewColor : integer);
BEGIN
SetPoint(NewX,NewY,NewColor);
Radius:=NewRadius
END;
{ --------------------------------------------------- }
PROCEDURE TCircle.Show;
var LocColor : word;
BEGIN
LocColor:=GraphABC.PenColor;
GraphABC.SetPenColor(Color);
GraphABC.Circle(X,Y,Radius);
GraphABC.SetPenColor(LocColor)
END;
{ --------------------------------------------------- }
PROCEDURE TCircle.Hide;
var LocColor : word;
BEGIN
LocColor:=GraphABC.PenColor;
GraphABC.SetPenColor(RGB(255,255,25 5));
GraphABC.Circle(X,Y,Radius);
GraphABC.SetPenColor(LocColor)
END;
{ --------------------------------------------------- }
END. { ---------------- END FiguresABC ---------------- }
DeadWind вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TSR программа через некоторое время после запуска выводит на экран простейший графический объект, позволяя управлять им стрелками. Custom_L.E. Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 17.05.2012 16:26
Ошибка при создании класса, описывающего графический объект (графика в Borland C) МихаилБ Помощь студентам 7 30.06.2011 22:39
ООП - получить еще не созданный объект в дочернем классе Cronos20 PHP 7 30.11.2010 01:09
Паскаль ООП. Примеры программ с использованием ООП SeЯgey Помощь студентам 5 13.05.2009 21:55