Движение треугольника по синусоиде (программа не работает) - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Помогите пожалуйста с лабораторкой. Подскажите, почему не работает. (программа запускается, номер цвета принимается, но треугольник не показывает и двигать его не собирается)

Решение задачи: «Движение треугольника по синусоиде (программа не работает)»

textual
Листинг программы
PROGRAM Sta_Obj_17;
USES Graph,Crt;
TYPE
  TMesto=Object{"Место"}
           x,y:Integer;
           Constructor Init(initx,inity:Integer);
           Destructor Done;
         End;
  TPoint=Object(TMesto){"Точка"}
           Procedure Show(color:BYTE);Virtual;
           Procedure Hide;Virtual;
           Procedure MoveTo(newx,newy:Integer;color:BYTE);
         End;
  TTriangle=Object(TPoint){"Треугольник"}
            Constructor Init(initx,inity:integer);
            Procedure Show(color:BYTE); Virtual;
            Procedure Hide; Virtual;
          End;
  TGraph=Object {"Графика"}
           grdriver:Integer;
           grmode:Integer;
           Procedure Init(gd,gm:Integer;path:STRING);
           Procedure Fin;
         End;
 
{Описание методов объекта "место"}
Constructor TMesto.Init(initx,inity:Integer);
Begin
  x:=initx;   {текущие координаты}
  y:=inity;
End;
 
Destructor TMesto.Done;
Begin
  WriteLn;
End;
 
{Описание методов объекта "точка"}
Procedure TPoint.Show(color:BYTE);
Begin
  PutPixel(x,y,color);{Рисование точки}
End;
 
Procedure TPoint.Hide;
Begin
  PutPixel(x,y,GetBkColor);{Гашение}
End;
 
Procedure TPoint.MoveTo(newx,newy:Integer;color:BYTE);
Begin
  Hide;        {Гашение}
  x:=newx;     {Новые координаты}
  y:=newy;
  Show(color); {Рисование}
End;
 
{Описание методов объекта "графика"}
Procedure TGraph.Init(gd,gm:Integer;path:STRING);
Begin
  grdriver:=gd;    {Номера драйверов}
  grmode:=gm;
  IniTGraph(grdriver,grmode,path);
End;
 
Procedure TGraph.Fin;
Begin
  CloseGraph;
End;
 
{Описание методов объекта "круг"}
Constructor TTriangle.Init(initx,inity:integer);    {:integer dobavila}
Begin
  TPoint.Init(initx,inity);
 
End;
 
Procedure TTriangle.Show(color:BYTE);
Begin
  SetColor(Color);       {Текущий цвет}
  SetFillStyle(1,color); {Установка вида штриховки}
  line(x,y,x-20,y-40);   {Рисование}
 line(x,y,x+20,y-40);
 line(x-20,y-40,x+20,y-40);
  FloodFill(x,y,color)   {Закрашивание}
End;
 
Procedure TTriangle.Hide;
Begin
  SetColor(GetBkColor);      {Текущий цвет-это цвет фона}
  SetFillStyle(1,GetBkColor);{Установка вида штриховки}
  line(x,y,x-20,y-40);    {Гашение окружности}
  line(x,y,x+20,y-40);
  line(x-20,y-40,x+20,y-40);
  FloodFill(x,y,GetBkColor); {Закрашивание}
End;
 
VAR
  pc:TTriangle;
  world:TGraph;
  x,y:Integer;
  col:Byte;
 
Begin
  ClrScr;
  WriteLn(' Движение закрашенного треугольника ');
  WriteLn(' из левого нижнего');
  WriteLn(' угла экрана в правый верхний');
  WriteLn(' Введите цвет рисования треугольника (от 1 до 15)');
  ReadLn(col);
  WriteLn('Нажмите ENTER');
  ReadLn;
  World.Init(DETECT,DETECT,'C:\TP\BGI');
 Delay(100);
  x:=250;
  y:=getmaxy;
  pc.Init(x,y);
  pc.Show(col);
  REPEAT
    Delay(10);
    x:=x+1;
    y:=getmaxy-Round(50*Sin((x-50)*10*PI/360));
    pc.MoveTo(x,y,col);
  UNTIL x>=900;
  World.Fin;
End.

Объяснение кода листинга программы

Этот код написан на Turbo Pascal и предназначен для создания графики синусоиды с помощью треугольника. В программе используются следующие типы данных:

  • TMesto (Место) - объект, представляющий точку на графике. У него есть две переменные x и y, которые представляют координаты точки. Конструктор этого типа инициализирует переменные x и y.
  • TPoint (Точка) - объект, представляющий точку на графике. У него есть одна переменная x, которая представляет координаты точки. Конструктор этого типа инициализирует переменную x.
  • TTriangle (Треугольник) - объект, представляющий треугольник на графике. У него есть три переменные x, y и col, которые представляют координаты вершины треугольника и его цвет соответственно. Конструктор этого типа инициализирует все три переменные.
  • TGraph (Графика) - объект, представляющий график. У него есть три переменные grdriver, grmode и path, которые представляют номер драйвера, режим графика и путь к файлу графики соответственно. Конструктор этого типа инициализирует все три переменные. Программа начинается с инициализации переменной col, которая будет использоваться для хранения цвета треугольника. Затем пользователю предлагается ввести этот цвет. После ввода цвета программа продолжает выполнение. Далее программа создает объект TGraph и вызывает его метод Init, передавая ему номер экрана, номер режима графика и путь к файлу графики. Затем программа создает объект TTriangle и вызывает его конструктор, передавая ему координаты и цвет треугольника. Затем программа входит в цикл, который продолжается, пока x не станет больше 900. Внутри цикла программа перемещает треугольник на новую позицию, вызывая метод MoveTo объекта TTriangle. Затем программа вызывает метод Delay для задержки выполнения программы на 10 миллисекунд. После выхода из цикла программа вызывает метод Fin объекта TGraph, чтобы завершить графический драйвер. Затем программа завершается.

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы