Шаг 65.
Основы логического программирования.
Создание и работа с окнами

    На этом шаге мы рассмотрим создание и работу с окнами.

    В систему программирования Пролог включено пять предикатов, позволяющих программе управлять окнами различных размеров. Это предикаты makewindow, shiftwindow, removewindow, clearwindow и gotowindow. С их помощью можно создавать несколько окон, выполнять ввод и вывод в определенные окна и устанавливать атрибуты окон.

Создание окон

    Предикат makewindow является основой всех операций над окнами в Прологе. Его общий вид:

    makewindow(<номер окна>, <атрибуты окна>, <атрибуты рамки>,
    <заголовок окна>, <начальный номер строки>,
    <начальный номер столбца>, <высота окна>, <ширина окна>).

    Значения восьми параметров определяют характеристики окна.

    Параметр номер окна, целое число, идентифицирует окно в программе. Это число используется в качестве ссылки на окно, в частности, предикатом gotowindow.

    Целочисленное значение, присвоенное аргументу атрибуты окна, определяет цвета символов и фона. Выбираемые значения зависят от того, какой монитор используется - цветной или монохромный.

    Приведем значения этого аргумента для цветного экрана (таблицы 1 и 2).

Таблица 1. Цвета текста
Значение Цвет Значение Цвет
0 Черный 8 Серый
1 Синий 9 Светло-синий
2 Зеленый 10 Светло-зеленый
3 Голубой 11 Светло-голубой
4 Красный 12 Светло-красный
5 Фиолетовый 13 Светло-фиолетовый
6 Коричневый 14 Желтый
7 Белый 15 Интенсивно-белый

Таблица 2. Цвета фона
Значение Цвет Значение Цвет
0 Черный 64 Красный
16 Синий 80 Фиолетовый
32 Зеленый 96 Коричневый
48 Голубой 112 Белый

    Чтобы вычислить значение этого параметра для различных комбинаций цветов, прежде всего выберите необходимый цвет текста и цвет фона. Затем сложите соответствующие значения атрибутов. Если вы хотите, чтобы символы мерцали, прибавьте к результирующему значению 128. Вычисленное значение используется как второй аргумент в предикате makewindow.

    Например, чтобы создать окно с белыми символами на черном фоне, сложите 7 (белый текст) и 0 (черный фон). Их сумма 7 является значением этого аргумента для предиката makewindow. Чтобы создать окно с красными символами на желтом фоне, сложите 4 (красный текст) и 104 (желтый фон), результат будет 108. Чтобы создать окно с синими символами на бледно красном фоне, сложите 1 (синий текст) и 12 (бледно красный фон). Их сумма - 41, используется как второй аргумент рассматриваемого предиката.

    Выбор рамки окна. Третий аргумент предиката makewindow есть целое число, значение которого определяет рамку окна. Если значение атрибута равно 0, то окно не имеет видимой границы. Другие значения определяют рамку окна с параметрами, указанными в таблице 3.

    Часть значений атрибута рамки окна задает ее цвет. Это делается аналогично заданию значения атрибута экрана. Если задается мерцающая граница, то она всегда будет белой, с мерцающей тонкой линией (в середине границы), имеющей указанный цвет.

Таблица 3. Цвета рамки окна
Значение Вид рамки окна Значение Вид рамки окна
0 Нет рамки -1 Мерцающая белая рамка
1 Синяя рамка -2 Мерцающая желтая рамка
2 Зеленая рамка -3 Мерцающая фиолетовая рамка
3 Светло-синяя рамка -4 Мерцающая красная рамка
4 Красная рамка -5 Мерцающая светло-синяя рамка
5 Фиолетовая рамка -6 Мерцающая светло-зеленая рамка
6 Желтая рамка -7 Мерцающая синяя рамка
7 Белая рамка -8 Мерцающая серая рамка
8 Коричневая рамка - -

    Аргумент Заголовок окна задает метку окна. Например, меткой окна может быть "Главное Меню", "Столбиковая Диаграмма", "Вспомогательное Меню" и т.п. Строка, задаваемая в качестве значения этого атрибута будет размещена в центре верхней линии рамки окна. Значение метки окна также может быть не определено, что соответствует отсутствию метки. В этом случае вводится аргумент, состоящий из двух последовательных знаков кавычки.

    Определение размеров и положения окон. Аргумент начальный номер строки предиката makewindow есть целое число, определяющее верхнюю строку (линию) создаваемого окна. Максимальное количество строк, умещающихся на экране, 25. Значение 4 указывает, что окно начинается с четвертой строки. Для рассматриваемого аргумента можно использовать значения от 0 до 24.

    Аргумент Начальный номер столбца предиката makewindow есть целое число, указывающее крайний левый столбец окна. Максимальное число столбцов, умещающихся на экране, 80 (от 0 до 79).

    Аргумент Высота окна есть целое число, определяющее количество строк, занимаемых создаваемым окном. Максимально возможное значение аргумента 25.

    Аргумент Ширина окна есть целое число, указывающее число столбцов, занимаемых окном. Максимальное значение аргумента 80.

    Если случайно будут указаны такие значения номера верхней строки и размера окна по вертикали, что нижняя строка окна окажется за нижней границей экрана, Пролог сообщит об ошибке следующим образом: The parameters in makewindow are illegal. Приведем несколько примеров использования этого предиката:

    Если какие-то аргументы предиката makewindow являются неопределенными переменными, то им присваиваются значения параметров текущего окна.

    На следующем шаге мы рассмотрим использование других предикатов для работы с окнами.




Предыдущий шаг Содержание Следующий шаг