ШРИФТЫ_
FONT, MODE, VDU, STIPPLE, SPRINT, DOWN
Начнем работу с MegaBasic с самого простого — изучим его шрифтовые возможности. Как уже упоминалось, для подготовки примеров мы будем пользоваться русифицированной версией MegaBasic 4.R. Это означает, что в оригинальной версии 4.0 один из двух латинских символьных наборов (FONT_1) заменен набором символов русского алфавита. В нем очертания знаков составляют стилистическое единство с сохраненным латинским шрифтом (FONT_2). Кроме того, в распоряжении программиста остается стандартный символьный набор, хранящийся в ПЗУ ZX Spectrum (FONT_0).
Итак, мы упомянули оператор, который переключает символьные наборы. Его формат
- где i — номер набора (0-, 1 или 2).
Текстовые возможности MegaBasic не ограничиваются выбором одного из трех символьных наборов. Он .позволяет менять размер символов текущего набора: 4x8, 8x8, 8x16 и 16x16 точек (рис. 18). Устанавливаются размеры шрифта оператором
MODE_m,[w]
Параметр m может принимать значения от 1 до 4, соответствующие приведенному ряду размеров шрифтов. Оператор MODE используется и с двумя параметрами: MODE_wlm. В этом формате w обозначает номер окна, для которого устанавливается размер шрифта т.
Комбинируя названные выше операторы обработки шрифтов, напишем небольшую демонстрационную программу:
10 PAPER 1: INK 6: BRIGHT 1: CLS 15 FONT_1: LET А$="Шрифты": GO SUB 100 20 FONT_2: LET A$="Fonts": GO SUB 100 30 FONT_0: LET A$="Fonts": GO SUB 100 40 MODE_1: GO TO 15
100 FOR N=1 TO 4:MODE_N: PRINT A$: PRINT : PAUSE 40: NEXT N 110 RETURN
Обратите внимание, что для шрифта FONT_1 (кириллица) не выводятся уменьшенные русские буквы в режиме MODE_1. Это объясняется тем, что в этом режиме MegaBasic не генерирует символы, а пользуется содержащимся в нем специальным (четвертым) символьным набором (аналогичным применяемому в одном из популярных текстовых редакторов Tasword).
MegaBasic предусматривает и альтернативный способ управления размерами символов. Оператор стандартного Бейсика PRINT CHR$ с параметрами 1...4 (не используемые Spectrum-Бейсиком коды символов) производит то же действие, что и оператор MODE. Еще один оператор MegaBasic, позволяющий достичь того же эффекта
VDUm
- представляется уж совершенным излишеством.
В сочетании с режимом FONT_4 может использоваться оператор
STIPPLE_d
- заштриховывающий символы (рис. 19). Плотность штриховки задается параметром d, рабочие значения которого лежат в пределах от 0 («нулевая» штриховка, символ не отличим от фона) до 15 (сплошное закрашивание).
|
IW«J |
|
|
Mo<U_2 |
Шрифт |
|
ModeJ |
|
|
Шрифт |
|
|
Mode_4 |
|
|
ШриФт |
Рис. 18. Шрифты MegaBasic.
|
•S-r С 3 S S— =__ |
■г-ь |
|
STIPPLE. |
..5 |
|
STIPPLE. |
_6 |
|
STIPPLE. |
_7 |
|
STIPPLE. |
_15 |
Рис. 19. Варианты штриховки.
В арсенале MegaBasic есть еще два оператора, нестандартно выводящие тексты на экран. Это SPRINT и DOWN.
выводит символьную строку с увеличением в указанное число раз без привязки к знакоместам, то есть начиная с произвольной точки экрана. Параметры х и у задают координаты в пикселях начальной (левой верхней) позиции вывода текста (за начало координат принимается в данном случае левый верхний угол экрана); и и v — масштаб увеличения символа по горизонтальной и вертикальной координатам (дробные значения масштаба округляются до целых); а$ — строку символов, предназначенную для вывода на экран.
|
0 |
■ |
|
|
[ л __ |
||
|
м |
|
|
|
hp |
i |
L |
|
Г ' |
||
Т
l.-t
тоже распечатывает на экране символьную строку, правда, без масштабирования и с привязкой не к точке, а к знакоместу, но зато вертикально — сверху вниз. Параметры п и с определяют координаты начальной позиции вывода (строка, столбец), а а$ — строковую переменную, предназначенную для вывода.
Теперь существенное замечание. В операторах MegaBasic, имеющих отношение к выводу на экран текстовой информации, размер знакомест (если не оговорено иное) считается равным не 8x8 пикселей, как в стандартном Бейсике, а 4x870. Соответственно, строки отсчитываются от верха экрана по-прежнему с 0 по 23, а столбцы от левого края экрана, но не с 0 по 31, ас 0 по 63, то есть по половинке стандартного знакоместа.
Следующая программа продемонстрирует возможности SPRINT и DOWN:

10 PAPER 1: INK 6: BRIGHT 1: CLS :FONT_1: LET А$="Шрифт" 100 FOR U=1 TO 6: LET X=(128-20*U): FOR V=1 TO 20 STEP 2 110 SPRINT_X, 5,U, V, A$ 115 INK 2: MODE_4: DOWN_5,30, A$: INK 6 120 PAUSE 40: CLS : NEXT V: NEXT U 130 GO TO 100