Диалекты бейсика для ZX Spectrum 1992 г.

Megabasic - Текстовые окна.


ТЕКСТОВЫЕ ОКНА_

WINDOW, CURRENT, FX, CLW

Теперь самое время перейти к описанию возможностей MegaBasic по управлению текстовыми окнами. Сразу после загрузки MegaBasic все окна, кроме окна встроенного в MegaBasic монитора-отладчика (о нем подробный разговор будет позже), совпадают с основным экраном стандартного интерпретатора. MegaBasic позволяет одновременно оперировать десятью окнами.

WINDOW_n,c,h,g

Оператор задает размеры окон. Параметры n (0...23) и с (0...63) устанавливают позицию левого верхнего угла окна, соответственно, по вертикали и горизонтали, a h (1...24) и g (1...64) — его размер (высоту и длину). Координаты задаются в знакоместах.

Оператор WINDOW устанавливает размеры только текущего (активизированного в данный момент) окна. Окно номер w делает текущим оператор

CURRENT_w

Возможности оконного интерфейса MegaBasic продемонстрируем на примере программы, которая выдает свой листинг в каждом из активизируемых по очереди окон:

4 PAPER 1: CLS

5 FOR N=2 ТО 7: PAPER N-2: INK 9-N

10 CURRENT_N:WINDOW_N.4*N,10,34:FX_1 ,N

20 CLW_N,1: REM Оператор очистки окна (описан чуть ниже)

25 MODERN f 2

30 LIST: LIST: LIST: LIST

40 PAUSE 80: NEXT N

50 GO TO 5

Управление окнами (правда, не всеми) можно осуществлять и с помощью оператора PRINT CHR$ с использованием кодов от 24 до 31, которые стандартный Бейсик оставил вакантными. При этом PRINT CHR$ 24 устанавливает текущим окно номер 0, PRINT CHR$ 25 — окно 1 и далее до PRINT CHR$ 31, который включает окно 7. Окна 8 и 9 этим способом не управляются.

Того же самого эффекта можно добиться, используя оператор VDU_24...VDU_31.

Потенциальные возможности оператора

FX_i,w

еще ждут своего исследователя. В фирменном описании указывается, что он служит для распределения потоков информации между окнами. Параметр i определяет вид выводимой информации: 0 — командная строка и сообщения об ошибках; 1 — листинг программы; 2 — информация, генерируемая в процессе выполнения программы; 3 — встроенный монитор-отладчик MegaBasic. Параметр w задает номер окна, в которое будет направляться информация из указанного потока (значения от 0 до 9).

Однако параметр I оператора FX может принимать не только значения от 0 до 3, но и 4, 5, 6. При этом параметр w может иметь значения вплоть до 66063! Это побочные, недокументированные режимы, о которых никакие руководства не упоминают. Потоки FX_4 и FX_5 могут использоваться, вероятно, для управления периферийными устройствами. Что касается FX_6,w, то в сочетании с рабочими значениями параметра w от 0 до 255 его действие аналогично РОКЕ 23609,w, то есть он изменяет длительность звука, подтверждающего нажатие клавиши на клавиатуре.

CLW_[w,]m

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

0 - заполнение окна цветом фона

(PAPER), аналогично действию оператора CLS Spectrum-Бейсика, но в пределах окна;

1 — производит то же действие, что и

CLW_0, но с заполнением цветом тона (INK);

2 - инвертирует изображение в окне

(меняет цвет фона на цвет тона и наоборот);

3 - заменяет все атрибуты текущего

окна на постоянные.

В случае двух параметров в операторе CLW первый (w) устанавливает номер окна, к которому относится действие оператора. Например, оператор CLW_w,3 заменяет атрибуты окна с номером w на атрибуты, установленные для текущего окна. Необходимо внимательно следить за тем, чтобы значение параметра w не выходило за разрешенные пределы (0...9). Иначе в лучшем случае программа прервется сообщением Y too large, в худшем, но наиболее вероятном — зависнет. Зато второй параметр (он бывает и единственным) можно увеличивать хоть до миллиона, поскольку любое значение свыше трех приравнивается трем.

В заключение рассказа о текстовых окнах приведем эффектную программу с использованием операторов WINDOW и CLW, имитирующую постепенное раскрывание окна:

5 PAPER 0: INK 5: BRIGHT 1: FONT_1 :MODE_4 10 CLS: FOR N=1 TO 10

15 LET S=10—N: LET L=33-3*N: LET H=2*N+1: LET W=6*N 20 WINDOW_SfL,H,W:CLW_1 30 NEXT N

40 STIPPLE_(RND*60): PRINT AT 9,15; INVERSE 1; PAPER 1;"0 К H O" 50 PAUSE 80: GO TO 10




СОДЕРЖАНИЕ:
  1. Laser Basic - Вывод спрайтов на экран; Вывод на экран части спрайта; Перенос атрибутов; Преобразование окна экрана; Наборы переменных; Перемещение спрайтов; Наложение спрайтов; Копирование изображения с экрана в спрайт; Преобразование спрайтов; Скроллинг пейзажа; Изменение размеров области спрайт-файла; Вспомогательные графические операторы и функции; Определение столкновений спрайтов; Сервисные операторы и функции; Процедуры; Загрузка и запись программ.


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Demo Party - Cafe'2000: Официальное приглашение
Интервью - интервью с ROBERT'ом - производителем и диллером Московского модема фирмы "Аллегро".
От редакции - Свершилось чудо! У нерегулярного электронного издания OverLog появился первый штатный корреспондент в лице многоуважаемого Mr. Undertaker'а.
Форум - Процедура перевода числа в десятичный вид. Процедура - сканер пароля.
Мозаика - Что нового нам готовит Magic Soft?

В этот день...   24 ноября