Модуль Crt позволяет выводить цветные символы на цветном экране. Хотя по-прежнему отображение будет происходить в текстовом режиме. Текстовый режим означает, что на экране могут выводиться только определенные символы в определенных местах (знакоместах). Можно представить экран, разделенным вертикальными и горизонтальными линиями на ячейки. В эти ячейки можно «вписывать» различные символы. У каждой ячейки есть адрес.
Модуль Crt содержит ряд процедур, позволяющих задавать цвет символов и экрана, очищать экран, менять позицию курсора и др.
Стандартный экран в Паскале чаще формируется из 25 сток и 80 столбцов. Строки нумеруются сверху вниз, а столбцы слева на право. Нумерация начинается с единицы (что может показаться непривычным).
Количество доступных цветов (для экрана и символов) всего 16. Они кодируются числами от 0 до 15. Также вместо чисел можно прописывать названия цветов.
Для того чтобы в программе можно было использовать содержимое модуля Crt, его надо импортировать (подключить) в программу. Делается это в секции, которая начинается со слова uses.
Чтобы очистить экран от всех надписей, требуется выполнить процедуру clrscr. Если перед этим был задан цвет экрана (с помощью textbackground), то экран будет залит соответствующим цветом.
Цвет текста определяется процедурой textcolor, позиция курсора – gotoxy.
Для вывода символов на экран используются стандартные процедуры write и writeln.
Также существует процедура временной задержки delay (аргумент задается в микросекундах), если требуется выводить символы не сразу, а постепенно.
uses crt; begin textbackground (7); clrscr; textcolor (12); gotoxy (10,5); write ('Hi, world!'); delay (1500); gotoxy (40,22); textcolor (14); write ('Yes'); readln end.
Все что позволяет делать модуль Crt на самом деле является псевдографикой, т.к. изображение формируется из символов (букв, цифр, кавычек и др.) в текстовом режиме.
Когда экран монитора работает в графическом режиме, то изображение на нем формируется из точек (пикселей), а не символов. Точка намного меньше символа, и, следовательно, на экране точек разместится куда больше, чем знакомест в текстовом режиме. Поэтому, несмотря на то, что система координат начинается также в левом верхнем углу, максимальные значения по двум осям намного больше, чем при работе с модулем Crt, и зависит от разрешения экрана. Отсчет в данном случае начинается с нуля.
Например, если размер экрана – 1024x768, то последняя точка имеет соответственно координаты 1023х767.
Чтобы при выполнении программы на Паскале запустился графический режим, требуется подключить модуль Graph.
Попробуем запустить графический режим и вывести что-нибудь на экран.
uses graph; var g, h, i, x, y, c: integer; begin g := detect; initgraph(g,h,''); setcolor(10); line(10,10, 300,300); x := 600; y := 500; randomize; for i := 1 to 50 do begin c := random (15); putpixel (x, y, c); x := x + 10; y := y - 5 end; readln end.
Использование detect позволяет определить тип графического драйвера автоматически.
Запуск графического режима выполняется с помощью процедуры initgraph. После этого на экране должно появиться окно, «работающее» в графическом режиме.
Процедура setcolor устанавливает цвет, которым в дальнейшем будут выводиться различные примитивы.
Процедура line выводит линию. Первые два числа – это одна координата, а третье и четвертое число – другая.
Процедура putpixel рисует точки. Помимо координаты она принимает третий аргумент – цвет точки.
uses graph; var g, h, i, j, x, y, x2, y2: integer; begin g := detect; initgraph(g,h,''); randomize; for i := 1 to 12 do begin setcolor(random(15)); x := random(400) + 100; y := random(400) + 100; for j := 1 to 10 do begin x2 := x + random(40)-20; y2 := y + random(40)-20; line(x,y, x2, y2); end; end; readln end.
Программа выводит на экран 12 «звездочек», каждая из которых содержит по 10 линий.
Координаты центральной точки каждой звездочки задаются случайным образом в диапазоне от 100 до 500 (400 + 100) пикселей.
Цвет также задается случайным образом.
Длина линий может быть до 20 пикселей и меньше.
Для вывода линии на экран используется процедура Line.
uses graph; var g, h, i, x, y, r: integer; begin g := detect; initgraph(g,h,''); randomize; for i := 1 to 30 do begin setcolor(random(15)); x := random(1000) + 100; y := random(800) + 100; r := random(100); circle(x,y,r); end; readln end.
Программа выводит на экран 30 окружностей разным цветом в разных местах окна.
Для вывода окружности на экран используется процедура Circle, которая принимает три параметра – координаты центральной точки и радиус окружности. В данном коде они определяются случайным образом с помощью функции random.
Модуль Graph включает несколько процедур для вывода на экран прямоугольников. Самая очевидная из них – это rectangle. Данная процедура принимает четыре параметра – координаты верхнего левого и нижнего правого угла. В результате получается прямоугольник без заливки. Цвет контура можно задать с помощью процедуры setcolor до того, как будет вызвана процедура rectangle.
Другой способ построения прямоугольников – это использование процедуры bar. В отличие от rectangle она выводит заполненный прямоугольник. Способ заливки и цвет задается с помощью процедуры setfillstyle, первый параметр которой – это стиль заливки (от 0 до 12, см. таблицу стилей заливки), а второй – цвет (от 0 до 15, см. таблицу цветов).
uses graph; var g, h, i, x, y, r: integer; begin g := detect; initgraph(g,h,''); rectangle(0,0,200,100); setfillstyle(1,10); bar(300,0,500,100); setfillstyle(2,15); bar(600,0,800,100); setfillstyle(3,1); bar(900,0,1100,100); setfillstyle(4,5); bar(200,100,300,300); setfillstyle(5,7); bar(500,100,600,300); setfillstyle(6,13); bar(800,100,900,300); setfillstyle(7,2); bar(0,300,200,500); setfillstyle(8,14); bar(300,300,500,500); setfillstyle(9,11); bar(600,300,800,500); setfillstyle(10,3); bar(900,300,1100,500); setfillstyle(11,12); bar(100,550,1000,650); readln end.
Результат выполнения кода