Особенности модуля CRT при работе в PascalABC

Модуль CRT

Модуль CRT содержит константы, переменные, процедуры и функции, предназначенные для работы с консолью. Если стандартные процедуры ввода/вывода реализуются через операционную систему, то модуль CRT позволяет работать с BIOS и непосредственно с видеопамятью.

Для подключения модуля надо написать в начале программы:

 

Uses CRT;

При работе с экраном через модуль CRT весь экран разбивается на отдельные строки, а каждая строка - на отдельные позиции, в каждую из которых можно поместить один символ (в том числе и пробел). Таким образом, весь экран разбивается на символьные позиции. Количество символьных позиций по ширине и по высоте называется разрешением текстового режима монитора.

Положение каждого элемента экрана определяется его координатами X (номер столбца, в котором расположен элемент) и Y (номер строки). Для каждого элемента можно задать цвет фона (задний план - TextBackGround) и цвет символа (передний план - TextColor). Кроме того, символ можно сделать мерцающим. Вся эта информация - атрибуты символа - помещается в одном байте  следующим образом:

 

Биты 7 6 5 4 3 2 1 0
  М Ф Ф Ф С С С С

 

Буквой М обозначен бит мерцания (символ мерцает, если в этом бите установлена 1), буквами Ф - биты, в которые записывается код цвета фона (биты 4-6), буквами С - биты, в которые помещается код цвета символа (биты 0-3).

 

 

Модуль CRT позволяет работать не только со всем экраном, но и выделять в нем прямоугольные окна. Любое окно задается своим левым верхним и правым нижним углом. Эти углы, так же как и положение любого объекта на экране задаются двумя координатами X и Y. При работе в окне координаты отсчитываются от левого верхнего угла окна. При запуске программы выделенное окно совпадает по размеру со всем экраном. По умолчанию установлен режим работы адаптера - 25 строк по 80 позиций в каждой, соответственно координаты такого окна - (1,1) и (80,25).

 

Коды цветов

 

Black 0 Черный
Blue 1 Синий
Green 2 Зеленый
Cyan 3 Голубой
Red 4 Красный
Magenta 5 Фиолетовый
Brown 6 Коричневый
LightGray 7 Светло-серый
DarkGray 8 Темно-серый
LightBlue 9 Светло-синий
LightGreen 10 Светло-зеленый
LightCyan 11 Светло-голубой
LightRed 12 Розовый
LightMagenta 13 Светло-фиолетовый
Yellow 14 Желтый
White 15 Белый
Blink 128 Мерцание символа

 

Цвета с кодами от 0 до 7 включительно можно использовать как для символов, так и для фона. Остальные цвета и код мерцания можно использовать только для символов.

 

Процедуры модуля CRT

 

ClrScr - Очистка экрана: процедура очищает текущее окно, заполняя его цветом фона, и помещает курсор в его верхний левый угол с координатами (1,1).

TextMode(Mode: Word) - задание текстового режима: устанавливает текстовый режим, заданный параметром Mode, увеличивает текущее окно до целого экрана. Некоторые значения параметра Mod e:

 

0 40х25 черно-белый для цветного адаптера
1 40х25 цветной для цветного адаптера
2 80х25 черно-белый для цветного адаптера
3 80х25 цветной для цветного адаптера

 

TextBackground(Color: Byte) - задание цвета фона. Для того, чтобы все окно изменило цвет фона, необходимо после данной процедуры вызвать процедуру ClrScr, иначе будет изменяться лишь фон отдельных элементов при их вводе или выводе.

TextColor(Color: Byte) - задание цвета символов и параметра мерцания.

Window(x1,y1,x2,y2: Byte) - задает размеры окна на экране и помещает курсор в левый верхний угол окна с координатами (1,1).

     NoSound - Выключает источник звука

     Sound (Hz: Word) - Запускает источник звука с частотой Hz герц

Delay(Ms: Word) - Задает задержку выполнения программы в миллисекундах.

GotoXY(X,Y:Byte) - Перемещает курсор к элементу экрана с заданными координатами (координаты отсчитываются от левого верхнего угла текущего окна).

DelLine - Удаляет строку, в которой находится курсор.

InsLine - Вставляет пустую строку на экране в месте расположения курсора и заполняет ее цветом фона.

     ClrEol - Удаляет все символы от курсора (включительно) до конца строки.

LowVideo -Включает низкую интенсивность символов.

HighVideo -Включает высокую интенсивность символов.

 

Функции модуля CRT

 

WhereX: Byte - возвращает текущую координату X курсора.

WhereY: Byte - возвращает текущую координату Y курсора.

Readkey: Char - считывает символ с клавиатуры.

KeyPressed: Boolean - анализирует нажатие клавиши клавиатуры (за исключением вспомогательных клавиш Shift, Alt, NumLock и т.п.). Результат - True, если клавиша на клавиатуре нажата, False - клавиша не нажата.

Примеры программ:

1.

uses crt;

var i,x,y,x1,y1:byte;

 BEGIN

window(1,1,80,25);

textbackground(15);

clrscr;

textbackground(3);

window(15,5,65,20);

clrscr;

textcolor (4);

gotoxy(20,7);

writeln('H E L L O!');

 END.

 

2.

uses crt;

var i,x,y,x1,y1:byte;

 

 BEGIN HideCursor;

window(1,1,80,25);

textbackground(0);

clrscr;

x:=1; y:=1; x1:=80; y1:=25;

for i:=1 to 7 do

begin

    textbackground(i);

    window(x,y,x1,y1);

    clrscr;

    delay(500);

    x:=x+5; y:=y+2; x1:=x1-5; y1:=y1-2;

end;

repeat until keypressed;

window(1,1,80,25);

textbackground(0);

clrscr;

ShowCursor;

 END.

 

Особенности модуля CRT при работе в PascalABC

Добавлены следующие процедуры:

 

HideCursor -Скрывает текстовый курсор.

ShowCursor -Делает текстовый курсор видимым.

CRTWindowSize(w,h: integer) -Устанавливает размер текстового окна в символах.

TextSize(sz: integer) -Устанавливает размер символов в пунктах (по умолчанию 10 пунктов).

TextNormal - Устанавливает нормальный стиль символов.

TextBold -Устанавливает жирный стиль символов.

ScrollingOff -Отключает прокрутку при выводе.

ScrollingOff -Включает прокрутку при выводе.

Следующие процедуры не выполняются. Оставлены для совместимости:

Sound(hz: integer);

NoSound;

TextMode(i: integer);

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: