ЦВЕТ
Раскраска изображений
paper, ink, border
Spectrum-Бейсик позволяет раскрашивать экран монитора с
использованием восьми цветов: черного, синего, красного, фиоле-
тового, зеленого, голубого, желтого и белого.
Изображение на экране строится из сочетания включенных и
выключенных пикселей, причем как одни, так и другие Spectrum-
Бейсик позволяет окрашивать в различные цвета. Цвет выключен-
ных пикселей называется цветом фона, включенных — цветом
тона. Следовательно, цвет фона — это цвет «пустого» (без изобра-
жения) экрана, цвет тона — цвет окраски символов или гра-
фических объектов, выводимых на экран.
Задаются цвета фона и то-
на, соответственно, операто-
рами PAPER (бумага, англ.) и
INK (чернила). После каждого
из них ставится параметр —
код требуемого цвета:
0 - черный,
1 - синий,
2 - красный,
3 — фиолетовый,
4 - зеленый,
• 5 - голубой,
6 — желтый,
7 - белый.
Например, после выполнения оператора
PAPER 6
знакоместа, в которые осуществляется вывод символов или гра-
фики, будут окрашиваться в желтый цвет.
Окрасить же весь основной экран можно, лишь очистив его с
помощью оператора CLS. Он, выключая пиксели экрана, окра-
шивает их в текущий (заданный оператором PAPER) цвет фона.
При работе в непосредственном режиме CLS можно заменить по-
вторным нажатием Enter.
После окраски основного экрана становится четко виден бордюр
— поле по краям экрана. Бордюр тоже можно окрасить в один из
восьми цветов. Делается это с помощью оператора BORDER. Выпол-
ним:
BORDER 6
— и бордюр (так же, как и весь экран) станет желтым.
После задания цвета тона, например, оператором
INK 1
все выводимое на экран изображение — символы ли, графика ли
— все будет окрашиваться в синий цвет. Попробуем:
PRINT "ZX Spectrum"
CIRCLE 127, 87, 50
На экране синим по желтому будет напечатано ZX Spectrum и
начерчена окружность (по желтому в том случае, если до этого
выполнялся предыдущий пример).
Цветовые эффекты
BRIGHT, INVERSE, FLASH, OVER
Изображение на экране Speccy может быть не только раскраше-
но, но и иметь две градации яркости: нормальную и повышенную
(оператор BRIGHT). Кроме того, оно может выводиться с инверсией:
цвет фона меняется на цвет тона, а цвет тона на цвет фона (INVERSE),
или сделано мерцающим: с меняющимися через определенный про-
межуток времени цветами тона и фона (FLASH). Все перечисленные
операторы используются с одним параметром, принимающим зна-
чение либо 1 — включение режима, либо 0 — выключение.
Это элементарно, но на пальцах не объяснишь. Лучше выпол-
нить операторы BRIGHT 1, FLASH 1, INVERSE 1 и попробовать выво-
дить на экран текст, задавая различные значения цветов тона и
фона.
Обычно, если на экран помещается новое изображение, на-
пример, в знакоместо впечатывается символ, прежнее изображе-
ние стирается. Но в Spectrum-Бейсике имеется оператор OVER ,
после выполнения которого компьютер переходит в режим, позво-
ляющий накладывать «новое» изображение на «старое». При этом
точки, в которых изображения совпадают, принимают цвет фона.
Включение и выключение режима наложения, как и режимов
инверсии и мерцания, задаются, соответственно, значениями 1 и
О, ставящимися после OVER.
Кроме упомянутых значений, указываемых после ключевых
слов PAPER, INK (0...7) и BRIGHT, INVERSE, FLASH (0 и 1), может исполь-
зоваться число 8, называемое параметром прозрачности. Напри-
мер, после выполнения последовательности PAPER 8, INK 8, BRIGHT 8,
INVERSE 8 и FLASH 8 оператор
PRINT AT 10,10;"*"
впечатает звездочку (*) в 10-й столбец 10-й строки в цветах, ранее
установленных для этого знакоместа. Если, скажем, в этом знако-
месте размещался мерцающий символ (FLASH 1) синего цвета
(INK 1) на желтом фоне (PAPER 6) с повышенной яркостью (BRIGHT 1),
то и звездочка будет выведена в этих же цветах.
После PAPER и INK может стоять также параметр 9. INK 9 предо-
ставляет компьютеру самостоятельно выбрать цвет тона, который
контрастен цвету фона: черным по светлому фону (зеленому,
голубому, желтому и белому) или белым по темному (черному,
красному, синему и фиолетовому). Таким же образом действует
PAPER 9, устанавливая цвет фона контрастным цвету тона.
Постоянные и временные атрибуты экрана_
Прежде всего поясним значение нового термина, появившегося
в заголовке, — атрибуты экрана. Это общее название для цветов
фона, тона, режимов яркости и мерцания, устанавливаемых для
каждого знакоместа экрана. Задавая цвета и перечисленные ре-
жимы, мы говорим, что задаем атрибуты. Теперь поясним, почему
они бывают постоянные и временные.
До сих пор мы использовали ключевые слова PAPER, INK, BRIGHT
и FLASH как самостоятельные операторы. Их действие распростра-
нялось на весь экран и длилось до того момента, пока эти операто-
ры не выполнялись с новыми параметрами. То есть мы работали с
постоянными атрибутами экрана.
Однако часто бывает необходимо напечатать каким-либо цветом
лишь одно слово или символ, не влияя на окраску последующих,
то есть не меняя значения постоянных атрибутов. Сделать это
можно, используя ключевые слова, управляющие цветом, в качест-
ве параметров оператора PRINT.
Записываются они так же, как и AT и TAB — в произвольном
месте данных, предназначенных для вывода на экран, отделяясь от
них точками с запятой. К примеру, после выполнения строки
PRINT "*"; INK 4; "*"; PAPER 5; "*"
на экране появятся три звездочки. Цвета фона и тона первой из
них будет соответствовать ранее определенным постоянным атри-
бутам (если они не были специально заданы, то звездочка будет
напечатана черным по белому, то есть цветами, устанавливаемыми
компьютером сразу после включения питания). Вторая звездочка
окрасится в зеленый тон, но с тем же фоном. Третья пропечатается
зеленым по голубому. Установленные в строке временные атрибу-
ты, в данном случае цвета тона и фона, действуют только до конца
PRINT или до появления в строке новых параметров. Если после
этого мы вновь зададим PRINT без параметров (PRINT "*"), то убедим-
ся, что временные атрибуты никак не повлияли на постоянные.
Ключевые слова INVERSE и OVER тоже могут использоваться в
операторе PRINT, переключая режим инверсии и совмещения лишь
на время его работы.
Все графические построения (точки, линии, дуги, окружности)
также можно производить не только в постоянных цветах (как до
сих пор мы делали), но и во временных. Для этого операторы,
задающие атрибуты экрана (INK, PAPER и прочие), ставятся сразу за
ключевым словом графического оператора и отделяются от пара-
метров точкой с запятой. Например:
PLOT 32, 80
DRAW 32, 0
DRAW INK 4; 32, 0
DRAW 32, 0
В результате выполнения этих операторов на экране высветятся
три отрезка. Крайние будут окрашены в постоянный цвет тона
(черный по умолчанию). Средний — в соответствии с временным
параметром INK — в зеленый.
Но не все так радужно в королевстве цветной графики
ZX Spectrum. Проведем по экрану две диагонали: красную и си-
нюю. Чего проще:
PLOT 0, 0
DRAW INK 2; 255, 175
PLOT 255, 0
DRAW INK 1; -255; 175
Посмотрев же на экран, замечаем не очень приятный эффект: в
районе точки пересечения первая проведенная диагональ (крас-
ная) перекрасилась в синий цвет.
Происходит это из-за того, что атрибуты экрана (цвета фона и
тона, яркость и мерцание) в ZX Spectrum устанавливаются не для
каждой точки, а целиком для знакоместа — одинаковые атрибуты
для каждой из 64 его точек (8x8). И, естественно, если через
знакоместо проведена линия с новым цветом тона, то все ранее
установленные точки в этом знакоместе перекрасятся. Эта особен-
ность компьютера накладывает ограничения на разнообразие ок-
раски изображения: в пределах одного знакоместа невозможно
использовать более двух цветов.
Операторы INVERSE и OVER также можно использовать и в каче-
стве параметров графических операторов. Операторы с INVERSE 1
будут честно ставить точки или прочерчивать линии цветом фона,
с OVER 1 на фоне будут рисовать тоном и, наоборот, на тоне фоном.
Операторы, в которых одновременно размещены и INVERSE 1, и
OVER 1, не будут менять изображение на экране.