Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Движение треугольника по треугольному контуру

52K
18 декабря 2009 года
Nik47
4 / / 01.12.2009
Помогите пожалуйста исправить программу, которая выполняла бы движение треугольника по треугольному контуру.

Код:
Program Graphworld;
  Uses Graph;
  Type
    Location = object
                        x,y :integer;
                        constructor Init (initX, initY :integer);
                        destructor Done;
                        function GetX :integer;
                        function GetY :integer;
                   end;
 
  Constructor Location.Init (initX, initY :integer);
        Begin
          X:=InitX;
          Y:=InitY
        End;
 
  Destructor Location.Done;
        Begin
        End;
 
  Function Location.GetX:integer;
        Begin
          GetX:=x;
        End;
 
  Function Location.GetY:integer;
        Begin
          GetY:=y;
        End;
 
{=======================================================================}
 
  Type Point = object (Location)
visible:boolean;
                        Procedure Show; virtual;
                        Procedure Hide; virtual;
                        Procedure Moveto (newX, newY :integer);
                   End;
 
  Procedure Point.Show;
        Begin
          Putpixel(x, y, Getcolor);
          Visible:=TRUE
        End;
 
  Procedure Point.Hide;
        Begin
          Putpixel(x, y, GetBkColor);
          Visible:=FALSE
        End;
 
  Procedure Point.Moveto;
        Var TempVisible:boolean;
        Begin
          TempVisible:=visible;
          If TempVisible then Hide;
          X:=newX;
          Y:=newY;
          If TempVisible then Show;
        End;
 
 
 
{=======================================================================}
 
  Type Circle = object (Point)
                        Radius :integer;
                        Constructor Init (initX, initY, initR :integer);
                        Procedure Show; virtual;
                        Procedure Hide; virtual;
                        Function Getradius :integer;
                    end;
 
  Constructor Circle.Init;
        Begin
          X:=initX;
          Y:=initY;
          Radius:=initR
        End;
 
  Procedure Circle.Show;
        Begin
          Graph.circle(x, y, radius);
          Visible:=TRUE
        End;
 
  Procedure Circle.Hide;
        Var tempcolor :word;
        Begin
          Tempcolor:=Getcolor;
          Setcolor(Getbkcolor);
          Graph.Circle(x, y, radius);
          Setcolor(Tempcolor);
          Visible:=FALSE
        End;
 
 
  Function Circle.Getradius;
        Begin
          Getradius:=radius;
        End;
 
{=============================================================================}
 
  Type World = object
                        Mode :integer;
                        Driver :integer;
                        Procedure Initworld(gdr, gmode :integer; path :string);
                        Procedure Endworld;
                   End;
 
  Procedure World.Initworld;
        Var rez :integer;
        Begin
          Driver:=gdr;
          Mode:=gmode;
          Initgraph(driver, mode, path);
          Rez:=Graphresult;
          If rez<>GrOK then
                Begin
                  Writeln(GraphErrorMsg(rez));
                  Halt(1);
                End;
        End;
 
  Procedure World.Endworld;
        Begin
          Closegraph;
          Writeln('The end of the world.');
        End;
 
  Type ppoint = ^point;
       pcircle = ^circle;
 
  Var namepathdriver :string;
        W  :world;
        Pt  :ppoint;
        Pc  :pcircle;
 
  Begin
        { инициализация мира }
        writeln('Путь к драйверу');
        readln(namepathdriver);
        w.initworld(detect, detect, namepathdriver);
 
        { рождение объектов }
        pt:=new(ppoint,init(100,100));
        pc:=new(pcircle,init(200,200,100));
 
        { развитие объектов }
        pt^.show;
        pc^.show;
        readln;
        pt^.moveto(50, 50);
        pc^.moveto(390, 390);
        readln;
 
        { смерть объектов }
        dispose(pt,done);
        dispose(pc,done);
 
        { конец мира }
        w.endworld;
        readln;
 End.
1
21 декабря 2009 года
kot_
7.3K / / 20.01.2000
С чем конкретно у вас проблемы?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог