[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 8.8. Эта программа демонстрирует возможности изображения объёмных предметов и столбиковых диаграмм.
 
 
Демонстрация
 
Внимание: будет работать только если Turbo Pascal установлен в каталог C:\TP и каталог C:\TP\BGI содержит необходимый файл egavga.bgi.
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.

[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]