УПРАВЛЕНИЕ ЭКРАНОМ В ТЕКСТОВОМ РЕЖИМЕ
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Назначение модуля CRT

 

Модуль CRT содержит подпрограммы, предназначенные для работы с экраном в текстовом режиме.

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

 

Размеры экрана в текстовом режиме – 80 позиций по горизонтали и 25 – по вертикали. Координата Х меняется по горизонтали слева направо, Y – по вертикали сверху вниз. Началом отсчета является левый верхний угол с координатами (1, 1) – рисунке 10.1.

 

Рисунок 10.1 – Координаты позиций экрана в текстовом режиме

 

Цвета экрана кодируются либо значениями констант, либо их кодами, представленными в таблице 10.1.

Таблица 10.1 – Кодировка возможных цветов экрана

Константа Код цвета Значение
Black 0 черный
Blue 1 синий
Green 2 зеленый
Cyan 3 бирюзовый
Red 4 красный
Magenta 5 малиновый
Brown 6 коричневый
LightGray 7 светло-серый
DarkGray 8 темно-серый
LightBlue 9 светло-синий
LightGreen 10 светло-зеленый

Продолжение таблицы 10.1.

LightCyan 11 светло-бирюзовый
LightRed 12 ярко-красный
LightMagenta 13 светло-малиновый
Yellow 14 желтый
White 15 белый
Blink 128 мерцание

 

Для символов можно использовать любые цвета из таблицы, а для фона – только цвета с кодами от 0 до 7.

 

 


Процедуры и функции модуля CRT

 

Процедура ClrScr;

Очищает экран и помещает курсор в левый верхний угол экрана. Все позиции символов заполняются пробелами, причем используется текущее определение текстовых атрибутов. Таким образом, если для TextBackGround не задан черный цвет, то для всего экрана устанавливается соответствующий фоновый цвет.

 

Процедура Delay(Msec:Word);

Выполняет задержку выполнения программы на заданное число миллисекунд.

 

Процедура DelLine;

Удаляет строку, на которой находится курсор. Все строки, расположенные ниже, сдвигаются на одну строку вверх, внизу экрана появляется новая строка.

 

Процедура GoToXY(X,Y:Byte);

Устанавливает курсор в точку с заданными координатами. Если задаются недопустимые координаты (Х > 80 или Y > 25), то обращение к процедуре игнорируется.

Функция KeyPressed:Boolean ;

Возвращает значение True, если на клавиатуре нажата клавиша и False в противном случае. Символ (символы) остаются в буфере клавиатуры. Нажатие клавиш Shift, Alt, Ctrl не распознается. Код клавиши можно считать с помощью функции ReadKey.

 

Процедура NoSound;

Выключает внутренний динамик.

Функция ReadKey:Char;

Считывает символ, нажатый на клавиатуре. Считанный символ на экране не отображается.

Процедура Sound(Herz:Word);

Включает внутренний динамик, параметр Herz задает частоту генерируемого сигнала в герцах.

Процедура TextBackGround(Color:Byte);

Устанавливает фоновый цвет. Параметр Color должен быть целого типа и иметь значение от 0 до 7.

 

Процедура TextColor(Color :Byte);

Задает цвет выводимого символа. Параметр Color должен быть целого типа и иметь значение от 0 до 15, соответствующее одной из констант цветов (табл.10.1).

 

Процедура Window(X1,Y1,X2,Y2:Byte);

Задает размеры окна на экране и помещает курсор в левый верхний угол окна с координатами (1, 1).

X1, Y1 – координаты левого верхнего угла окна;

X2, Y2 - координаты правого нижнего угла окна;

Если хотя бы одна из координат недопустима, процедура не выполняется.

 

 

Примеры использования модуля CRT

 

 

Пример 10.1. Иногда возникает необходимость приостановить выполнение программы до нажатия какой-либо клавиши. Это можно сделать с помощью процедуры Wait, приведенной на рисунке 10.2.

 

Рисунок 10.2 – Процедура приостановки программы

 

Пример 10.2. Программа Example_19, показанная на рисунке 10.3, иллюстрирует технику управления цветами выводимых символов.

Program Example_19;

Uses CRT;

Begin

Writeln('По умолчанию выводятся белые символы');

Writeln('      на черном фоне      ');

      { Задание цветов цвета текстовыми константами}

TextColor(Yellow);

TextBackGround(Blue);

Writeln('Желтые символы на синем фоне');

     { Задание цветов числовыми константами }

TextColor(4);

TextBackGround(7);

Writeln('Красные символы на сером фоне');

     { Задание мерцания символов }

TextColor(15+128);

TextBackGround(4);

Writeln('Белый мерцающий текст на красном фоне');

End.

Рисунок 10.3 – Программа Example_19

Пример 3. Написать программу, имитирующую движение шарика по экрану, который изменяет свое направление, «отражаясь» от краев экрана. Для изображения шарика использовать символ « 0 ». Каждое отражение сопроводить звуковым сигналом. Программа решения задачи показана на рисунке 10.4.

 

Program Example_20; {Скачущий шарик}

Uses CRT;

Const Ball='O';     { имитация шарика }

  Blank=' ';    { стирание шарика }

Var x,y : byte;   { текущие координаты шарика }

  Right, Down : boolean; { признаки направления движения }

Procedure Beep;      { звуковой сигнал при достижении края }

Begin

Sound(100); Delay(100); NoSound

End;

Begin

Clrscr;           {чистим экран}

Write('Для завершения нажмите любую клавишу');

GotoXY(10,5);

x:=9; Y:=5;

repeat

  GotoXY(x,y);

  Write(blank);    { стираем старое положение шарика }

  if Right Then x:=x+1 else x:=x-1; { определяем новое }

  if Down Then y:=y+1 else y:=y-1; { положение шарика }

  GotoXY(x,y);

  Write(Ball);                  {рисуем шарик}

  Delay(100);                   {задержка для наглядности}

  If x=80 then begin Right:=False; Beep End; {достигли правой границы}

  If x=1 then begin Right:=True; Beep End; {достигли левой границы}

  If y=25 then begin Down:=False; Beep End; {достигли низа экрана}

  If y=1 then begin Down:=True; Beep End; {достигли верха экрана}

until KeyPressed;

Clrscr      {чистим за собой экран}

End.

 

Рисунок 10.4 – Программа Example_20

 




ГРАФИКА

 

 

Назначение модуля GRAPH

 

Модуль GRAPH содержит подпрограммы, предназначенные для работы с экраном в графическом режиме.

X
В графическом режиме экран представляет собой матрицу из точек (пикселов), причём имеется возможность управлять цветом каждой отдельной точки. Координаты любой точки определяются парой целых чисел – порядковым номером в строке Х и порядковым номером строки экрана Y.  Таким образом, координаты левого верхнего угла экрана (0, 0). Число точек в строке и число строк определяются режимом работы и для наиболее часто используемого (VGAH) составляют величины 640 и 480. На рисунке 11.1 показано расположение осей и координаты угловых точек экрана.

 

Рисунок 11.1 – Координаты экрана в графическом режиме

 

Любой объект, высвеченный на экране, представляет собой совокупность отдельных пикселов. При переходе в графический режим экран очищается; отличием графического режима от текстового является отсутствие курсора.

Кодировка цветов графического экрана совпадает с описанной в разделе 10.1.

При работе с библиотекой графических модулей её необходимо подключить конструкцией Uses GRAPH.

Перед началом работы с графическим режимом его необходимо инициализировать путем обращения к процедуре:

InitGraph(var gd,gm:integer; pt:string);

где   gd - тип графического адаптера;

gm – режим работы графического адаптера;

pt - путь к драйверам адаптера.

Для автоматического выбора адаптера переменной gd необходимо присвоить значение gd: = detect, при этом переменная gm не используется, а вместо pt нужно использовать пробел.


Программа, использующая библиотеку GRAPH, должна заканчиваться обращением к процедуре

CloseGraph;

которая завершает работу в графическом режиме, освобождает буфер, сбрасывает все графические режимы.

Работая в графическом режиме, пользователь имеет возможность временного возврата в текстовый режим работы дисплея, для этого необходимо обратиться к процедуре

RestoreCrtMode;

Обратный переход можно выполнить с помощью процедуры

SetGraphMode;

 

 



Дата: 2019-03-05, просмотров: 211.