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

PRO-DOS - шрифты.


ШРИФТЫ_

♦CCHR, *CHR, *CSIZE, *LARGE, +NORMAL, *DIR

Подобно таким мощным диалектам Бейсика, как Mega-Basic и старшие версии Beta Basic, маленький PRO-DOS позволяет работать со шрифтами различных размеров.

Простейшей операцией со шрифтом, выполняемой PRO-DOS, является переключение набора символов со стандартного (ширина знака 8 пикселей) на узкий (ширина знака 4 пикселя). Делает это переключение оператор

*cchr

Применяется узкий шрифт так же, как и обычный (с учетом приведенных в предыдущем разделе особенностей вывода данных в окна). Только атрибуты для двух смежных символов, вписанных в стандартное знакоместо (8x8 пикселей), естественно, будут всегда одинаковы. Кроме того, узкие символы не распознаются функцией стандартного Бейсика SCREENS (X,Y) (см. стр. 92).

После переключения на узкий шрифт произойдет переопределение всех зарегистрированных в системе окон. За единицу измерения величин, определяющих расположение и размеры окна, будет принято не стандартное, а узкое знакоместо (4x8 пикселей).

Приведем пример, который иллюстрирует эту достаточно неординарную особенность:

30 * WSIZE 10, 2, 16, 8: REM Единственное окно 40 *TPAT BIN 11100010: REM Шаблон для его заливки 50 GO SUB 100: REM Сходим на заливку 60 *CCHR: REM Узкий шрифт

70 PAUSE 100: GO SUB 100: REM Зальемся еще разок 80 STOP

100 *CLS: PRINT "***": RETURN: REM Здесь заливают

Результат работы программы приведен на рис. 1 1.

Создается впечатление, что на экране присутствуют два разичных окна На самом же деле, это одно и то же, определенное в строке номер 30 окно, которое по-разному трактуется в зависимости ог типа установленного шрифта Попутно заметим, что изменение размера шрифта не влияет на фактуру заливки, заданную инструкцией *ТРАТ

Если узкий шрифт инициализирован сразу после запуска PRO-DOS или после команды *NEW, то для него будет доступна лишь левая половина экрана. Строка, длиннее 32 символов, будет переноситься, а попытка выполнить, скажем, оператор

PRINT AT 0, 40; "***"

будет игнорироваться. Чтобы сделать доступной для узкого шрифта правую половину экрана, необходимо создать окно соответствующего размера, например, оператором

♦WSIZE 0, 0, 63, 23

Восстановить режим печати нормальным шрифтом, то есть отменить действие *CCHR, можно при помощи оператора

*CHR

Если узкий шрифт но своим свойствам практически аналогичен обычному, то шрифты, которые мы с извесгной долей условности будем называть графическими, существенно отличаются от него.

Размер графических шрифтов задается неисполняемым оператором

*CSIZE n, m

и может быть только кратным (и, в частности, равным) размеру стандартного. Первый параметр определяет значение вертикального, а второй — горизонтального масштабных факторов. Оба значения могут быть только целочисленными. Например, инструкция *CSIZE 2, 1 «сгенерирует» шрифт в два раза выше, a *CSIZE 1, 2 — в два раза шире стандартного. Команда +CSIZE 32, 24 сформирует шрифт, где каждый символ будет размером во весь экран. Возможно и дальнейшее увеличение размеров символа (вплоть до ♦CSIZE 255, 255), равно как и уменьшение до нулевого размера (*CSIZE 0, m, *CSIZE п, 0 или +CSIZE 0, 0). Однако эти варианты вряд ли представляют практический интерес.

Рис. 11. «Раздвоение» окон.

Поскольку оператор +CSIZE является неисполняемым, в PRO-DOS введен специальный оператор инициализации графического шрифта

♦LARGE

Он не требует параметров. После того как +LARGE встретится в программе, PRINT начнет печатать графическим шрифтом, размеры которого были заданы последним выполненным оператором ♦CSIZE. Обратное переключение на стандартный шрифт производит оператор

♦NORMAL

♦LARGE без предварительного выполнения оператора ♦CSIZE устанавливает графический шрифт с размером, равным стандартному (8x8 пикселей). То есть по умолчанию считается, что выполнен оператор ♦CSIZE 1,1.

Теперь о специфике работы с графическими шрифтами. Во-первых, при печати с их использованием игнорируются ключевые слова AT и TAB — оператор PRINT выводит символы, начиная с левого верхнего угла экрана. Если текст превышает длину строки экрана, то вывод продолжается с начала той же строки.

Позиция вывода устанавливается с помощью оператора ♦PLOT х, у (но не PLOT без звездочки') Параметры х (0...256) и у (0...192) задают координаты верхнего левого угла позиции печати первого выводимого символа. Для того, чтобы в этой позиции не появлялась точка, можно использовать конструкцию

PRINT INVERSE 1;: +PLOT х, у: PRINT INVERSE 0

При выводе на экран надписей, выполненных графическими шрифтами, так же как и при графических построениях, игнорируются знакоместа и окна, символы накладываются на существующее изображение, не стирая его. Это и позволило нам называть их «графическими».

При работе с графическими шрифтами нужно следить за цветовыми атрибутами экрана. Может получиться так, что один символ будет окрашен в несколько цветов (хотя это не всегда плохо).

Уникальной среди диалектов Бейсика является способность PRO-DOS печатать графическими шрифтами в восьми направлениях. Неисполняемый оператор

♦DIR п

определяет направление печати в зависимости от значения параметра п, которое задается тем же способом, что и для операторов скроллинга (см. стр. 143).

Приведем пример, демонстрирующий возможности графических шрифтов (рис. 12):

30 ♦NORMAL: REM Стандартный шрифт

40 FOR L=2 ТО 15: PRINT AT L, 6; "NORMAL": NEXT L:REM Строки стандартным шрифтом

50 «CSIZE 2, 2: REM Размер графического шрифта

60 «LARGE: REM Инициализация графического шрифта

70 40DIR 14: REM Пишем вправо-вниз

80 PRINT INVERSE 1;: *PLOT 20, 180: PRINT INVERSE 0;

90 PRINT "GRAPHIC": REM Строка графическим шрифтом

Символы графических шрифтов различных размеров формируются непосредственно в процессе работы программы из текущего набора символов, расположенного в ПЗУ или ОЗУ. Поэтому при использовании альтернативного (например, русифицированного) символьного набора автоматически будут получаться графические шрифты такого же вида. Напротив, изображения символов узкого шрифта закодированы внутри системного файла PRO-DOS, и поэтому русификация его более трудоемка*.

NORMAL. СО NORMAL VA NORMAL NORMAL - •"ORMRL 0RMRL

N

NOPI NORI _ NORMrtL V NORMAI^/4 NORMAL* NORMAL ^♦

Mb ПЙК

MrtL >

Рис. 12. Возможности графических шрифтов.

Рис. 7. Построения прерывистыми линиями.




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


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

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



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

Похожие статьи:
Reviews - Tendencies of ZX Spectrum game industry development.
wArЫz! - свежий wArЫz: Acid Paper #4,Quick Commander 2.6f,Hine #00,Kaka 1-13,Hrip 1.o4,Scream #1,Insanity #9,Crossroads #5, #7,Explorer #2, #3.
Circulation Of Warez On Today's Scene
Черненькое - похождения Чапая.
ЭСМИнец - обзор свежей прессы: Body, MSF, Inferno, Psychoz, Insanity, Scream.

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