Использование предикатов для работы с окнами

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

Создание окон предикатом makewindow.

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

makewindow (Window_number, Screen_attribute, Frame_attribute, Frame_string, Starting_row, Starting_column, Window_height, Window_width)

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

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

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

Целочисленные значения Screen_attribute задают комбинацию цветов текста и фона. Для монохромных мониторов эти значения приведены табл. 1. Значения атрибутов экрана для цветного графического адаптера приведены в табл. 2.

Таблица 1.

Атрибуты цвета

Цвет текста Цвет фона Screen_attribute Примечание
Черный Черный   Пустой экран
Белый Черный   Позитивное изображение
Черный Белый   Негативное изображение

Таблица 2.

Соответствие между значением атрибута, цветом текста и цветом фона для окон Турбо-Пролога.

Цвет текста Значение атрибута Цвет фона Значение атрибута
Черный   Черный  
Синий   Синий  
Зеленый   Зеленый  
Голубой   Голубой  
Красный   Красный  
Фиолетовый   Фиолетовый  
Коричневый   Коричневый  
Белый   Белый  
Серый      
Светло-синий      
Светло-зеленый      
Светло-голубой      
Светло-красный      
Светло-голубой      
Желтый      
Интенсивно-белый      
           

Наряду с указанным существуют три необязательных атрибута, задание которых определяет вывод символов с подчеркиванием, изображение с высоким разрешением и вывод мерцающих символов. Вывод символов с подчеркиванием реализуется, если к значению аргумента Screen_attribute добавить 1. Для получения изображения с высоким разрешением, нужно к основному значению атрибута экрана добавить 8. Символы будут мерцающими, если к значению атрибута экрана добавить 128.

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

Чтобы создать окно с белыми символами на черном фоне, сложите 7 (белый текст) и 0 (черный фон), результат будет 7.

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

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

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

Таблица 3.

Значение атрибута, определяющего цвет рамки окна в Турбо-Прологе.

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

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

Аргумент Starting_column указывает крайний левый столбец окна. Значения аргумента изменяются от 0 до 79.

Аргумент Window_height определяет количество строк, занимаемых создаваемым окном.

Аргумент Window_width указывает число столбцов, занимаемых окном.

Предикат shiftwindow используется для смены текущего окна (переключения). Его форма: shiftwindow(Window_number).

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

В то же время Турбо-Пролог "помнит" предыдущие окна и их атрибуты. Например, если окно 3 имеет такие атрибуты, что оно будет перекрывать текущее окно (окно 4), то выполнение предиката shiftwindow (3) вызовет появление окна 3, в которое вложено окно 4. Информация из окна 4, частично закрытая окном 3, сохраняется и появится на экране, когда произойдет переключение и окно 4 вновь станет текущим.

Предикат gotowindow позволяет выполнять быстрое переключение между двумя окнами, которые не перекрываются. Его форма: gotowindow (Window_number).

Этот предикат выполняется быстрее, чем shiftwindow, и поэтому его следует использовать для переключения между окнами, содержащими большое количество текста.

Предикат clearwindow. Данный предикат удаляет из текущего окна все текстовые и графические изображения. Предикат не имеет аргументов. Окно и рамка окна, если она имеется, не разрушаются. Окно целиком закрашивается соответствующим цветом фона.

Предикат removewindow удаляет текущее окно с экрана. Предикат аргументов не имеет. Все текстовые и графические изображения, находящиеся в окне, также удаляются. Если за данным окном находится другое окно, то это окно и его содержимое становятся видимыми. Если удаляется последнее из заданных окон, на экране появляется то изображение, которое было на нем до создания окон.


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



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