Пример 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.