Помощь - Поиск - Пользователи - Календарь
Полная версия: ООП
Форум «Всё о Паскале» > 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)...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.