Стандартный модуль Graph, текстовый и графический режимы
Graph читается “граф”, это сокращение слова “графика”. Если мы напишем первой строкой своей программы USES Graph, то Паскаль предоставит в наше распоряжение целый ряд процедур и других средств, позволяющих нам рисовать на экране разноцветные точки, отрезки прямых, дуги, закрашенные и незакрашенные окружности, прямоугольники, а также выполнять ряд других действий. Пользуясь этими возможностями, мы очень скоро напишем программы, рисующие причудливые картинки и заставляющие изображения двигаться по экрану. С помощью модуля CRT мы научимся управлять этим движением с клавиатуры, а значит сможем создавать свои собственные компьютерные игры. В 10.9 я объясню создание игры “Торпедная атака”.
А в этой главе я опишу работу самых популярных с моей точки зрения процедур модуля Graph.
Текстовый и графический режимы
Существуют два режима (способа) работы компьютера с монитором - текстовый и графический. В любом месте программы вы можете приказать компьютеру переключиться из одного режима в другой.
Текстовый режимиспользуется для вывода на экран текстовой и числовой информации. Работая в текстовом режиме, компьютер считает экран разбитым на 25 строк и 80 столбцов, иногда на другое количество. В каждой из получившихся клеточек умещается ровно одна буква или цифра или знак препинания или любой другой символ. Какой именно символ будет находиться в клеточке, диктуете вы в вашей программе. Рисовать и показывать картинки компьютер в текстовом режиме не может.
Работая в графическом режимекомпьютер считает экран разбитым на множество мельчайших пикселов, каждый из них - гораздо мельче клеточки текстового режима. Принцип построения изображения из пикселов описан в 3.4. В этом режиме компьютер может и рисовать картинки и печатать символы, причем если в текстовом режиме величина и форма всех букв более-менее одинакова, то в графическом режиме мы можем печатать символы самой разной формы и размеров.
Получается, что графический режим лучше текстового? В общем, да, конечно. Но у графического режима есть один недостаток - он требует от компьютера значительных усилий и поэтому на маломощных компьютерах часто работает раздражающе медленно.
Во всех написанных ранее программах мы ничего не говорили об этих режимах, мы молчали о них. Если мы в программе специально не просим, то Паскаль всегда выбирает текстовый режим. Говорят, что текстовый режим в Паскале используется по умолчанию.
Переключение между текстовым и графическим режимами
Итак, если вы собираетесь работать с изображениями, то должны переключиться в графический режим и для этого пишете первой строкой программы USES Graph. Но сама по себе эта строка не является указанием компьютеру переключиться в графический режим, хотя бы потому, что находится в разделе описаний, а не в разделе операторов. Для переключения в графический режим (или, как говорят, для инициализации графического режима) служит стандартная процедура InitGraph. Для того, чтобы закрыть графический режим и снова переключиться в текстовый, служит стандартная процедура CloseGraph.
(Начиная с этого момента я не буду приводить переводы и произношение английских слов. Многие из них приведены в приложении П3 и П4.)
Вот пример программы, которая сначала в текстовом режиме пишет на экране текст “Это текстовый режим”, затем переключается в графический режим, рисует окружность, а затем снова переключается в текстовый режим и пишет “Это снова текстовый режим”:
USES Graph;
VAR Device, Mode : Integer;
BEGIN
WriteLn(‘Это текстовый режим’);
{Инициализируем графический режим:}
ReadLn;
Device:=0;
InitGraph(Device, Mode, ’<путь к графическим драйверам>’);
Circle(100,80,50); {Обращение к процедуре рисования окружности. Пока без пояснений}
ReadLn;
{Закрываем графический режим, что рекомендую:}
CloseGraph;
WriteLn(‘Это снова текстовый режим’);
ReadLn
END.
Пояснения: Перед использованием процедуры InitGraph необходимо создать две переменные величины типа Integer с произвольными именами (я использовал имена Device и Mode). Обе эти переменные при обращении к процедуре InitGraph должны быть записаны внутри круглых скобок. Вам на первых порах совершенно не обязательно это знать, но поясню, что Device означает тип вашего видеоадаптера (CGA, EGA, VGA или другой), а Mode означает номер графического режима. Если вы ничего не знаете ни о том, ни о другом, смело пишите Device := 0 и Паскаль сам определит тип вашего видеоадаптера и установит самый мощный из допустимых графический режим.
Третий элемент - не что иное, как путь к графическим драйверам Паскаля. Я использовал угловые скобки <>, чтобы подчеркнуть, что в вашей программе нужно писать не те четыре русских слова, что внутри угловых скобок, а то, на что они указывают. Почти наверняка для вас графический драйвер представлен файлом egavga.bgi, расположенном в каталоге BGI. Если сам Паскаль расположен в каталоге TP диска c, то строка вашей программы будет выглядеть так:
InitGraph(Device, Mode, ‘c:\TP\BGI’)
Если вы ее записали верно, то можете попытаться запустить программу, и при правильной настройке Паскаля у вас все получится. Тех, кто не знает, что такое каталоги и файлы, отсылаю к приложению.
Если Паскаль при запуске графического режима жалуется (File not found (GRAPH.TPU)), то прочтите «Обзор популярных команд меню» из части IV. Там сказано, что делать.
Учтите, что при переключении режимов все содержимое экрана стирается.