Операторы
Текст на экране
В окне 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.