Программа демонстрирует возможности изображения объёмных предметов и столбиковых диаграмм — Pascal(Паскаль)

{        Внимание! Для работы этой программы необходимо, чтобы:

          1) Turbo Pascal был установлен в каталог  C:\TP;
          2) каталог C:\TP\BGI содержал файл  egavga.bgi ;
          3) в меню  Options/Directories  был указан путь
             к файлу  graph.tpu,  например,  С:\TP\UNITS.

        Если Turbo Pascal установлен в другом каталоге, нужно изменить
        путь к нему в процедуре  InitGraph.
}

 Program Design;
   Uses Graph, Crt;         { подключение к программе библиотек Crt и Graph }
   Const
     Height:Array[1..8] of Integer = (40,150,90,240,190,120,50,90);
                                         { массив высот столбиков диаграммы }
   Var Color            : Word;    { код цвета }
       Key              : Char;
       i, x, y, y1, h   : Integer;
       GrDriver, GrMode : Integer; {тип и режим работы графического драйвера}
       GrError          : Integer; { код ошибки графики                       }
 BEGIN
   GrDriver := Detect; InitGraph(GrDriver, GrMode, 'C:\TP\BGI');
   GrError := GraphResult; If GrError <> GrOk then Halt;

   y := 120; h := 50; y1 := 140;
   SetTextStyle(DefaultFont, HorizDir, 2); { шрифт, направление, размер }
   OutTextXY(160, 20, 'Конструируем интерьер');
   SetFillStyle(5, LightRed);     { тип штриховки и цвет (ярко красный) }

   For i := 4 downto 1 do
     begin               { рисование параллелепипедов заданного размера }
       Bar3D(75, y1+i*h, 145, y1+(i+1)*h, 60, TopOff); Delay(200);
     end;

   Bar3D(75 , y1 , 145, y1+h , 60, TopOn);    Delay(200);  {задержка}
   Bar3D(180, y , 290, y+h , 30, TopOn);      Delay(200);
   Bar3D(330, 225 , 400, y+4*h , 30, TopOn);  Delay(200);
   Bar3D(300, y+3*h, 370, y+5*h , 30, TopOn); Delay(200);
   Bar3D(370, y+3*h, 440, y+5*h , 30, TopOn); Delay(200);
   Bar3D(300, y , 370, y+h , 30, TopOn);      Delay(200);
   Bar3D(370, y , 440, y+h , 30, TopOn);      Delay(200);
   Bar3D(442, y , 500, y+5*h , 30, TopOn);    Delay(200);
   Rectangle(135, 425, 470, 450);    { рисование pамки для сообщения }
   SetTextStyle(DefaultFont, HorizDir, 1);
   OutTextXY(150, 435, 'Для продолжения нажмите любую клавишу !');
   Key := ReadKey; ClearViewPort;    { очистка окна }
 {-----------------------------------------------------------------}
   SetTextStyle(DefaultFont, HorizDir, 2);
   OutTextXY(100, 20, 'Рисуем столбиковую диаграмму');
   x := 50; Randomize;        { инициализация датчика случайных чисел }

   For i := 1 to 8 do         { цикл по столбикам диаграммы           }
     begin
       Color := Random(12)+1; { задание кода цвета (кроме черного)    }
       SetFillStyle(i, Color);{ задание типа штриховки и цвета        }
       SetColor(Color);
       Bar3D(x, 350-Height[i], x+50, 380, 20, TopOn); {рисование столбика}
       x := x+70; { изменение координаты x };
       Delay(200)
     end;

   Key := ReadKey; CloseGraph; {Закрытие графического режима}
 END.

Leave a Comment

65 − = 60