Модуль призначений для роботи з екраном і клавіатурою.
Робота з екраном.
Робота з екраном виконується в текстовому режимі. Екран розглядається як послідовність рядків. По умовчанню їх 25. Кожний рядок містить 80 позицій - колонок. Кожна позиція характеризується координатами <номер рядка, номер колонки>. Початок координат знаходиться в лівому верхньому куті екрану і має координати (1,1).
1,1
80,25
Поточні координати завжди можна взнати, використовуючи функції
WHEREX, WHEREY.
Для переміщення курсору в позицію використовується процедура
GOTOXY (<x>,<y>);
На екрані можна створювати вікна. Вікно - це прямокутна область екрану. Для створення вікна використовується процедура
WINDOW (<x1>,<y1>,<x2>,<y2>);, де
x1,y1 - координати лівого верхнього кута
x2,y2 - координати правого нижнього кута
Після виконання цієї процедури система координат переноситься в лівий верхній кут цього вікна, координати будуть відраховуватись в рамках цього вікна і всі дії будуть відноситись до цього вікна. Якщо координати задано некоректно, то ніяких дій не буде виконано.
Завжди можна взнати координати поточного вікна, використовуючи змінні WINDMAX і WINDMIN. В кожній змінній зберігається значення Х і У в молодшому і старшому файлі. Отримати ці значення можна використовуючи функції LO і HI.
x: = LO (WINDMIN) + 1; x2: = LO (WINDMAX) + 1;
y: = HI (WINDMIN) + 1; y2: = HI (WINDMAX) + 1;
Для очищення поточного вікна використовується процедура
CLRSCR;
. При цьому вікно заливається кольором поточного фону. Курсор встановлюється в позицію (1,1).
Робота з кольором
Кольорова гама складається з двох кольорів: кольору фону і кольору символів.
Таблиця кольорів
Константа кольору
| Числове значення кольору
| Колір
|
BLACK
|
| чорний
|
BLUE
|
| синій
|
GREEN
|
| зелений
|
CYAN
|
| голубий
|
RED
|
| червоний
|
MAGENTA
|
| фіолетовий
|
BROWN
|
| коричньовий
|
LIGHTGRAY
|
| яскраво-сірий
|
DARKGRAY
|
| темно-сірий
|
LIGHBLUE
|
| яскраво-синій
|
LIGHTGREEN
|
| яскраво-зелений
|
LIGHTCYAN
|
| яскраво-голубий
|
LIGHTRED
|
| яскраво-червоний
|
LIGHTMAGENTA
|
| яскраво-фіолетовий
|
YELLOW
|
| жовтий
|
WHITE
|
| білий
|
BLINK
|
| Мерехтіння
|
Для встановлення кольору символів використовується процедура
TEXTCOLOR (<колір>);
Для встановлення кольору фону використовується процедура
TEXTBACKGROUND (<колір>);
Для кольору фону використовуються тільки перші 8 кольорів (0 .. 7).
Задати кольори можна використовуючи системну константу TEXTATTR таким чином:
TEXTATTR: = <колір символів> + 16*<колір фону>[+128];
HIGHRIDEO; - включення яскравості кольору символів
LOWVIDEO; - виключення яскравості кольору символів
NORMVIDEO; - повернення кольорового режиму, що був на початок роботи програми
Використання звуку
Можна використовувати вбудовані динаміки для подачі звукових сигналів.
Включення звуку виконується за допомогою процедури
SOUND (<частота в ГЦ>);
Нормальні значення частоти від 32 гц до 8 кгц.
Звучання не закінчиться до тих пір, поки не виконається процедура виключення звуку
NOSOUND;
Щоб затримати виконання програми використовується процедура
DELAY (<мл.сек.>);
Наприклад, цикл для озвучення сирени можна записати цикл
For i:=32 to 1000 do
Begin
Sound (i);
Delay (100);
NoSound;
end;
Робота з клавіатурою
При введенні даних з клавіатури спочатку коди всіх натиснутих клавіш заносяться в спеціальний буфер клавіатури і уже з нього можуть бути зчитані в структури програми за допомогою різних засобів. Буфер побудовано по типу черги: нове значення дописується в кінець, а зчитується значення перше. Після зчитування вся черга посувається вперед на один символ. Буфер очищується при використанні процедур вводу алгоритмічних мов.
Можна працювати з самим буфером Для цього використовується дві спеціальні функції:
KEYPRESSED - логічна функція для аналізу натиснення клавіш.
= TRUE, якщо в буфері клавіатури присутній хоча б один символ.
= FALSE, якщо буфер пустий.
READKEY - зчитування одного символу з буферу клавіатури. Функція повертає символьне значення коду, що є на цей момент в буфері клавіатури першим. Якщо буфер пустий, то програма припиняється до натиснення довільної клавіші. Символи натиснутих клавіш не відображаються на екрані.
Клавіші Ctrl, Shift, Alt, NumLock, CapsLock не дають коду символу.
При роботі з буфером клавіатури корисно на початку програми його почистити:
WHILE Keypressed do CH:= ReadKey;
Використання клавіш в регістрі Alt, функціональних клавіш і клавіш управління курсором посилають у буфер 2 символи, перший з них 0, другий - код клавіші.
Для перевірки клавіш в регістрі Ctrl використовується символ " ^ " .
C IN [ ^F, ^P, ^S].
UpCase (<символ>); - перевід символу в верхній регістр.
Можна отримати в тексті програми "образ" будь-якої управляючої функціональної клавіші, якщо натиснути комбінацію клавіш Ctrl+P, а потім саму клавішу.
Коди службових клавіш:
Tab-9; Enter-13; Esc-27
Коди функціональних клавіш:
F1 - 0 59
F2 - 0 60
.........
F10 - 0 68
F11 - 0 133
F12 - 0 134
- 0, 75; - 0, 80; - 0, 76; - 0, 82;
Для створення світлового меню враховується, що один з пунктів повинен бути виділений в порівнянні з іншими. Тобто перед його виводом колір фону встановлюється іншими.
Для формування вертикального меню обробляється натиск на клавіші - стрілка вгору, стрілка вниз, Enter, Esc. Для горизонтального - стрілка вправо, стрілка вліво, Enter, Esc.
Натиск всіх інших ігнорується. Розглянемо вертикальне меню. При натиску на клавішу "стрілка вгору" номер поточного пункту меню повинен зменшитися на 1. Якщо при зменшенні номер стане рівним 0, то встановлюємо номер виділеного пункту - останній. З останнього пункту організується перехід на перший.
При виборі Esc - вихід з меню.
При виборі Enter - виклик процедури обробки відповідного пункту меню.