ШРИФТЫ_
FONT, MODE, VDU, STIPPLE, SPRINT, DOWN
Начнем работу с MegaBasic с самого простого
— изучим его шрифтовые возможности. Как уже упоминалось, для
подготовки примеров мы будем пользоваться русифицированной версией
MegaBasic 4.R. Это означает, что в оригинальной версии 4.0 один из двух
латинских символьных наборов (FONT_1) заменен набором символов русского
алфавита. В нем очертания знаков составляют стилистическое единство с
сохраненным латинским шрифтом (FONT_2). Кроме того, в распоряжении
программиста остается стандартный символьный набор, хранящийся в ПЗУ ZX
Spectrum (FONT_0).
Итак, мы упомянули оператор, который переключает символьные наборы. Его формат
FONTJ
- где 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.
SPRINT_x,y,u,v,a$
выводит символьную строку с увеличением в
указанное число раз без привязки к знакоместам, то есть начиная с
произвольной точки экрана. Параметры х и у задают координаты в пикселях
начальной (левой верхней) позиции вывода текста (за начало координат
принимается в данном случае левый верхний угол экрана); и и v —
масштаб увеличения символа по горизонтальной и вертикальной координатам
(дробные значения масштаба округляются до целых); а$ — строку
символов, предназначенную для вывода на экран.
l.-t
DOWN_n,c,a$
тоже распечатывает на экране символьную строку,
правда, без масштабирования и с привязкой не к точке, а к знакоместу,
но зато вертикально — сверху вниз. Параметры п и с определяют
координаты начальной позиции вывода (строка, столбец), а а$ —
строковую переменную, предназначенную для вывода.
Теперь существенное замечание. В операторах
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