| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
2. Работа с дисплеем в текстовом режиме. Модуль CRT.Практически любая программа, разработанная для ЭВМ, использует дисплей для отображения вводимой и выводимой информации. В зависимости от типа используемого в ЭВМ адаптера (устройства, осуществляющего согласованный обмен информацией между каналами различного уровня) всю выводимую на экран дисплея информацию подразделяют на текстовую и графическую. Собственно выделяют текстовый и графический режимы. Модуль Crt содержит константы, переменные и подпрограммы, предназначенные для работы с консолью. В отличие от стандартного ввода-вывода, когда он осуществляется через операционную систему, подпрограммы модуля Crt работают с BIOS, и даже непосредственно с видеопамятью. При работе с экраном через модуль Crt весь экран разбивается на отдельные строки, а каждая строка - на отдельные позиции, в каждую из которых можно поместить один символ (в том числе и пробел). Таким образом, весь экран разбивается на отдельные неделимые прямоугольные элементы. Для каждого элемента можно задать цвет фона (задний план) и цвет символа (передний план). Кроме того, в случае необходимости символ можно сделать мерцающим. Вся эта информация (атрибуты символа) размещается в одном байте
информации так, как показано на рисунке:
На этой схеме буквой М обозначен бит мерцания (символ мерцает, если в этом бите установлена 1), буквами Ф - биты, в которые записывается код цвета фона (биты 4 - 6) и буквами С - биты, в которые помещается код цвета символа (биты 3-0). Модуль Crt позволяет работать не только со всем экраном, но и
выделять в нем прямоугольные окна. Любое окно задается своим левым верхним углом
и правым нижним углом. При работе в окне координаты отсчитываются от левого
верхнего угла окна. При запуске программы выделенное окно совпадает по размеру
со всем экраном. Если режим работы адаптера - 25 строк по 80 позиций, то
координаты такого окна - (1, 1) и (80, 25).
При задании цвета и фона выводимых на экран символов предусмотрены константы:
Для формирования фона используются первые восемь констант. Кроме перечисленных констант в разделе интерфейса модуля Crt объявлены следующие переменные:
TextMode(Bw80) - активизирует черно-белый текстовый режим с размером экрана в 25 строк по 80 символов в каждой строке. TextMode(256) или TextMode(Co80+Font8x8) - активизирует цветной текстовый режим с размером экрана в 43 строки (EGA) или 50 строк по 80 символов в каждой строке. TextAttr := $70; - цвет символов - 7, цвет фона - 0. CheckEOF := True; - разрешено использование комбинации клавиш Ctrl- Z. Описанные в разделе интерфейса модуля Crt стандартные процедуры и функции позволяют управлять различными параметрами при выводе символов на экран. Для этого используются следующие процедуры:
Выбор конкретного режима из этого меню осуществляется с помощью клавиш "стрелка вверх" и "стрелка вниз". При нажатии на эти клавиши генерируется звук продолжительностью 0.05 секунды. При этом строка, на которую падает выбор, выделяется цветом и фоном. Выбор фиксируется с помощью клавиши Enter. После этого выдается сообщение о выбранном режиме. [program Menu] Информация о текущем цвете символов и фона хранится в глобальной
переменной TxetAttr (атрибуты текста) типа byte. Если процедура устанавливает
свои цвета для вывода на экран, то значение переменной можно использовать для
того, чтобы восстановить цвета перед завершением работы процедуры. Например,
следующая программа в начале работы сохраняет текущие цвета, а в конце
восстанавливает старые значения. Помимо использования процедурTextColor и TextBackGround для установки
цвета символов и цвета фона, установить атрибуты текста можно непосредственно
присвоением значений переменной TextAttr, определяемого по
формуле: Например, чтобы установить белый цвет символов на красном фоне, переменной TextAttr надо присвоить значение 79 (79 = 4 * 16 + 15). В качестве значения, присваиваемого TextAttr, удобно использовать двузначную шестнадцатеричную константу, старший разряд которой определяет номер цвета фона, младший - номер цвета символов. Например, синий цвет обозначается десятичным числом 1, желтый цвет обозначается десятичным числом 14, которому соответствует шестнадцатеричное число E. Таким образом, желтый цвет на синем фоне кодируется шестнадцатеричным числом 1Е. Так как в изображении шестнадцатеричных чисел используются буквы латинского алфавита от A до F, то для того чтобы компилятор различал шестнадцатеричные числа и имена переменных, перед шестнадцатеричным числом ставится символ "$". Так, инструкция TextAttr := $1E; задает синий фон (номер цвета 1) и желтый цвет символов (номер цвета 14 в десятичной форме, и Е - шестнадцатеричной). Если к сообщению надо привлечь внимание, то можно установить его
атрибуты так, что оно будет мигать. Чтобы это сделать, надо к константе,
определяющей атрибуты, прибавить 128. 2.1. Воспроизведение звука.Персональный компьютер комплектуется встроенным динамиком, способным генерировать звуковые сигналы в диапазоне от 30 до 32000 Гц (воспроизводятся только чистые тона, сила звука не меняется). Для управления частотой звука и его продолжительностью в модуле Crt предусмотрены следующие стандартные процедуры:
Пример: Программа, позволяющая имитировать игру на музыкальном инструменте. [program DemoSound] 2.2. Работа с клавиатурой.Стандартная клавиатура имеет три типа клавиш:
При нажатии какой-либо клавиши вырабатывается так называемый код сканирования, который зависит от места расположения клавиши на панели клавиатуры и не связан с изображенным на клавише символом. Код сканирования может подвергаться анализу в программе и является основой алгоритмов управления клавиатурой. Каждая группа клавиш вырабатывает коды сканирования определенной структуры. Символьные клавиши возвращают при нажатии одно значение (1 байт), которое принято называть простым кодом. Управляющие клавиши при нажатии возвращают два значения (2 байта), причем первое из них равно 0 (это и есть признак управляющей клавиши), а второе - фиксированная, соответствующая нажатой клавише величина. Коды возврата специальных клавиш принято называть расширенными. Клавиши сдвига возвращают коды, которые не распознаются средствами Паскаля, и поэтому их применение представляет определенную сложность. Управление клавиатурой осуществляется посредством специализированных функций модуля CRT: ReadKey и KeyPressed:
Пример: Программа, иллюстрирующая обработку кодов сканирования символьных и управляющих клавиш. [program DemoScanCode] 2.3. Пример использования подпрограмм модуля CRT. Рассмотрим программу, которая случайным образом выбирает размер и
местонахождение окна на экране, закрашивает его в цвет, выбранный случайным
образом, помещает в него текст и включает источник звука. |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
© Copyright(c) 2004 Amro Group. All rights reserved |
|