Помощь - Поиск - Пользователи - Календарь
Полная версия: ООП
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Александр
Здравствуйте !!!!

Нужно построить объекты: круг, дуги элипса в круге, круг и квадрат!!!!

Первые два уже сделаны, помогите с третьим!!!

Спасибо!!!

uses Crt,Graph;
type
TCircle = object
X,Y,R: Integer;
Color: Word;
constructor Init(cX,cY,cR: Integer; cColor: Word);
procedure Draw(cColor: Word);virtual;
procedure Show;
end;
TEllipse = object(TCircle)
X1,Y1: Integer;
constructor Init(eX1,eY1,cX,cY,cR: Integer;cColor: Integer);
procedure Draw(cColor: Word);virtual;
end;

constructor TCircle.Init;
begin
X := cX;
Y := cY;
R := cR;
Color := cColor;
end;
procedure TCircle.Draw;
begin
SetColor(cColor);
Circle(X,Y,R);
SetColor(14);
end;
procedure TCircle.Show;
begin
Draw(Color);
end;
constructor TEllipse.Init;
begin
inherited Init(cX,cY,cR,cColor);
X1 := eX1;
Y1 := eY1;
inherited Draw(Color);
end;
procedure TEllipse.Draw;
var
I: Integer;
begin
SetViewPort(450,100,550,150,ClipOn);
for I := 1 to 50 do
begin
I := I + 1;
SetColor(Random(14) + 1);
Ellipse(X1+Random(50),Y1+Random(30),
Random(180),Random(180),Random(10),Random(20));
end;
SetColor(15);
end;

var
Ellipse: TEllipse;
Circle: TCircle;
Rect: TRec;
Gd,Gm: Integer;
begin
Randomize;
InitGraph(Gd,Gm,'C:\TP7\BIN');
Circle.Init(120,120,100,12);
Circle.Show;
Ellipse.Init(390,80,500,150,100,7);
Ellipse.Show;

repeat until KeyPressed;
end.


Тегами пользуемся ...
volvo
Александр,
что именно должно отрисовываться при вызове Draw для каждого из этих объектов? Я например не увидел разницы между результатом TEllipse.Draw и TCircle.Draw... Это первое.

Второе - зачем в конструкторе TEllipse вызывается
inherited Draw(Color);

я бы этого не делал. Не стоит смешивать создание объекта с его отрисовкой (тем более что после Init Вы все равно вызываете Show)...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.