Axiom Справочник языка

Операторы

Текст на экране

В окне SCREEN текст размещается не свободно, а по ячейкам сетки, и ему можно задать цвет и фон. Для этого служат три оператора: CLS очищает вывод, COLOR задаёт цвет символов и режим фона, LOCATE выбирает ячейку, с которой начнётся следующий текст. У каждого из них собственная форма вызова, поэтому ниже они разобраны по отдельности.

Текстовая сетка и условия работы

Позиция текста задаётся строкой и столбцом сетки, а не пикселями: ячейка занимает 8 x 12 пикселей. Текстовый режим предоставляет сетку 80 x 25; размеры сеток графических режимов приведены на странице SCREEN, а для адаптивного режима 10 они вычисляются как SCREENWIDTH() \ 8 и SCREENHEIGHT() \ 12.

Оператор CLS работает и в обычной текстовой области среды исполнения. Для описанного здесь договора COLOR нужен графический SCREEN 1..10, а LOCATE перемещает курсор в текстовой сетке того же графического режима.

Оператор CLS

CLS удаляет содержимое вывода.

CLS

В окне SCREEN очистка также возвращает текстовый курсор в ячейку 1, 1. До открытия окна SCREEN очищается обычная текстовая область среды исполнения. На графическом экране очистка удаляет одновременно текст и нарисованные пиксели:

SCREEN 3
PRINT "Старая надпись"
CLS
PRINT "Экран очищен"

Оператор COLOR

COLOR задаёт цвет символов и режим фона для следующих операций текстового вывода.

COLOR <цвет символов>
COLOR <цвет символов>, <фон>
COLOR <цвет символов>, TRANSPARENT

Аргумент foreground содержит номер цвета символов, аргумент background — номер непрозрачного фона под символами. Слово TRANSPARENT вместо числового фона включает вывод без закрашивания фона под символами. Форма с одним цветом сохраняет прежний режим фона.

Этот цветовой договор требует графического режима SCREEN 1..10 и недоступен в текстовом режиме SCREEN 0. В примере сначала выбирается непрозрачный фон, затем прозрачный:

SCREEN 3
COLOR 14, 1
PRINT "Жёлтый текст на синем фоне"
COLOR 15, TRANSPARENT
PRINT "Белый текст поверх графики"

Оператор LOCATE

LOCATE выбирает строку и столбец текстового курсора, и следующий текстовый вывод начинается в выбранной ячейке.

LOCATE <строка>, <столбец>

Строки row и столбцы column нумеруются с 1. Пиксельные координаты в LOCATE не передаются, поэтому видимый вывод получается только при номерах внутри текущей сетки.

SCREEN 1
LOCATE 3, 5
PRINT "Текст начинается с третьей строки и пятого столбца"

Типы аргументов и границы курсора

COLOR принимает INTEGER: первый аргумент задаёт индекс символов, второй — индекс фона; TRANSPARENT вместо второго аргумента сохраняет пиксели под символами. Индексы нормализуются как ABS(значение) MOD 256. LOCATE принимает два INTEGER — номер строки и номер столбца, начиная с 1. Оба оператора требуют графический SCREEN 1..10.

В действующей среде LOCATE заменяет номер меньше 1 на 1. Большой номер сам по себе не вызывает MB3007: текст за видимой сеткой может оказаться невидимым, поэтому видимый результат даёт только ячейка внутри сетки. LOCATE не меняет пиксельную систему VIEW или WINDOW.

LOCATE принимает номера строки и столбца не больше 16384; превышение вызывает MB3007 до перемещения курсора. Значения меньше 1 приводятся к 1, координаты задаются в текстовых ячейках, а не в пикселях.

История экранного текста хранит не более 16384 строк. Когда обычный вывод достигает этого предела, наиболее старые строки удаляются, а новая строка остаётся доступной. Переход к далёкой строке за пределом не выделяет промежуточные строки без ограничения. Текст вне видимой сетки не становится видимым только из-за оператора LOCATE.

Отдельно от экранного текста CLS без аргумента очищает текущий вывод, а на CANVAS — рабочий кадр чёрным цветом. Форма CLS с цветом принимает INTEGER и работает только на CANVAS; очистка холста становится видимой после PRESENT. Если неподходящий графический режим известен компилятору, он сообщает MB2046; при проверке режима во время выполнения возникает MB3010.

Прокрутка и уже выведенный текст

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

Настройка цвета применяется к последующему выводу. Уже выведенные символы сохраняют своё оформление.

Пример

SCREEN 3
CLS
COLOR 14, 1
LOCATE 3, 5
PRINT "Жёлтый текст на синем фоне"

COLOR 15, TRANSPARENT
LOCATE 5, 5
PRINT "Белый текст поверх графики"
SLEEP

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

Диагностика

  • MB3010: оператор COLOR вызван без активного графического режима SCREEN 1..10.
  • MB3010: оператор LOCATE вызван без активного графического режима SCREEN 1..10.

См. также