Basic 1969 г.

Глава 16 - цвета.


Глава 16

Цвета

Краткое содержание: INK, PAPER, FLASH, BRIGHT, INVERSE, OVER,
BORDER

Выполним следующую программу:

10 FOR M«0 TO 1: BRIGHT, M
20 FOR N>1 TO 10
30 FOR C»0 TO 7

40 PAPER C: PRINT" "; REM 4 COLOVRED SPACES
50 NEXT C: NEXT N: NEXT M
60 FOR M»0 TO 1; BRIGHT M: PAPER 7
70 FOR C»0 TO 3
80 INK C: PRINT С; и ";
90 NEXT C: PAPER 0
100 FOR C»4 TO 7
110 INK C: PRINT C; " ";
120 NEXT C: NEXT M
130 PAPER 7: INK 0: BRIGHT 0
она продемонстрирует вам возможности вывода компьютером ZX
SPECTRUM на цветной телевизор восьми цветов (включая черный и бе-
лый) и двух уровней яркости, если телевизор черно-белый, вы уви-
дите различные градации серого цвета.

Ниже дана кодировка цветов:

0 - черный

1 - синий

2 - красный

3 - фиолетовый

4 - зеленый

5 - голубой

6 - желтый

7 - белый

Для черно-белого телевизора этот ряд представляет собой после-
довательность перехода серых полутонов от черного до белого. Для
использования цветов уясним строение графического экрана. Ои
состоит из 768 позиций (24 на 32), каждая нз которых представляет
матрицу 8 на 8 пикселей. Вспомним из 14 главы:

0 - белая точка

1 - черная точка

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

1. Для знакоместа (8 на 8 пикселей) форму символа определяют
чистые и закрашенные точки (0S и 1S), цвета, фона и тона опреде-
ляются PAPER и INK.

2. Цвета фона и тона кодируются от 0 до 7 каждый.

3. Яркость: 0 - обычная; 1 - повышенная.

4. Мерцание: 0 - постоянно; 1 - мерцание.

Заметим, что для одного знакоместа в 64 пиксела мы не можем

установить более одного цвета для фона и одного цвета для тона.
Это же относится и к яркости, и к мерцанию. Цвет, яркость и мер-
цание задаются для знакоместа (а не для отдельного пикселя) и яв-
ляются его атрибутами. Для изменения этих атрибутов предназначены
операторы: INK, PAPER, BRIGHT, FLUSH,
выполним:

PAPER 5

теперь вывод будет осуществляться на голубой фон (т.к. S - код

голубого цвета).
формат операторов:

PAPER - число от 0 до 7

INK - число от 0 до 7

BRIGHT - 0 или 1 / 0 - выкл, 1 - вкл.

FLUSH - 0 или 1 / 1 - вкл,0 - выкл.

Отметим, что использование других чисел больших, чем указыва-
лось выше допустимо, но дает другой эффект. К примеру '' 8 '' мо-
жет использоваться во всех четырех операторах как средство, поз-
воляющее определить значение ранее установленных атрибутов. Так,
PAPER 8

не установит цвета фона (т.к. такого цвета нет), а поможет вы-
яснить значение предыдущего PAPER. Операторы INK 8, BRIGT 8,
FLUSH 8 выдадут значение этих атрибутов.

"9м может использоваться только для INK и PAPER как средство
"контраст". Цвета INK и PAPER, которые вы используете, должны
быть контрастны друг другу, так как к белому цвету подходят тем-
ные тона: черный, синий, красный, фиолетовый; к черному цве-
ту-светлые тона: зеленый, голубой, желтый, белый.

Выполним:

INK 9: FOR OG ТО 7: PAPER С: PRINT С: NEXT С
можно запустить программу, выдающую на экран дисплея цветные по-
лосы :

INK 9: PAPER 8: PRINT AT 0,0;
FOR N=1 то 1000 PRINT N; NEXT N
цвет фона будет контрастен цвету тона в любой выводимой позиций.
Цветной телевизор построен на следующем принципе: человеческий
глаз способен воспринимать только три первичных цвета-синий,
красный и зеленый. Другие цвета образуются из их сочетаний, к
примеру, фиолетовый цвет образуется как комбинация синего с
красным ( код фиолетового тона "3м, он является суммой кодов си-
него "1" и красного "2").

Видеть все восемь цветов на одном участке экрана невозможно,
т.к. это будет темное пятно. Но там, где цвета частично наклады-
ваются друг на друга, мы увидим цветовую гамму. В качестве приме-
ра выполним программу (отметим, что INK получена с использованием
SHIFT и в G-режнме).

10 BORDER 0: PAPER 0: INK 7: CLS
20 FOR A*1 TO 6

30 PRINT TAB 6; INK 1; "[][][][]": REM 18 INK SQUARES
40 NEXT A

50 LET DATA LINE*200
60 CO SUB 1000
70 LET DATA L1NE*2 10
80 CO SUB 1000
9 0 STOP

200 DATA 2,3,7,5,4
210 DATA 2,2,6,4,4
1000 FOR Aa1 TO 6

1010 RESTORE DATA LINE
1020 FOR B»1 TO 5

1030 READ C: PRINT INK С; " СПШ " 5 S REM б INK SQUARES
1040 NEXT B: PRINT: NEXT A
1050 RETURN

Существует функция ATTR, позволяющая определить, какие атрибу-
ты были заданы для позиции экрана. Это сложная функция, н она бу-
дет рассмотрена в конце главы.

Операторы: INVERSE и OVER не управляют атрибутами, но тем не
менее определяют способ вывода на экран. В этих операторах
используются значения параметров '0' и '1*. Если вы дадите:
INVERSE 1, то выводимый символ изменит свою обычную фо^му (вывод
будет осуществляться в негативном изображении), т.е. в обычном
виде мы пишем черным по белому, а в инверсиом-белым по черному.

Оператор: OVER 1 устанавливает режим расширенного вывода. В
обычном режиме при выводе символа на знакоместо там стирается все
выведенное ранее; при расширенном выводе можно накладывать симво-
лы друг на друга. Это позволяет выводить составные символы, нап-
ример, стилизованные шрифты. Программа для вывода готического
шрифта:

10 OVER 1
20 FOR N»1 ТО 32

30 PRINT "О"; CHRS8; ........;

40 NEXT N

Отметим, что управляющий символ CHRS8 определяет одно место.
Возможен еще один способ использования INK и PAPER - их можно
вводить как параметры PRINT, точно так же можно использовать и
другие операторы, рассмотренные в этой главе, отметив, что при
этом их действие распространяется только до конца PRINT. В приме-
ре

PRINT PAPER 6; "Xй;: PRINT "Y"
только 'X' будет выведена на желтый фон.

INK н другие операторы не действуют в нижней части экрана,
предназначенной для ввода команд и INPUT-данных. Для изменения
цветов в этой части экрана служит оператор:
BORDER цвет

кодировка цветов прежняя. Возможны мерцания и повышенная яркость,
для этого используйте соответствующие параметры в INPUT (наподо-
бие PRINT). Эти параметры действуют до конца оператора или до тех
пор, пока запрашиваемые данные не будут введены. Выполним:

INPUT FLUSH l; INK 1; "WANT IS YOUR NUMBER ?"; N
возможно изменение цветов и с помощью управляющих символов, по-
добных управляющим символам для AT и TAB в главе 15.
CHR416 соотв. INK
CHR*17 - RAPER
CHR*18 - FLASH
CHRS19 - BRIGHT
CHRS20 - INVERSE
CHR*21 - OVER

так

PRINT CHRS16 + CHRS9
то же, что и

PRINT INK 9;

Можно полыомтьоя управляют»» опмволамв либо операторамп. Их
можно отаввть как поола комара отрока, так л в конца отроке. Дд*
удобства можшо польвоватьоя расширением клавиатуры о цифрами.
Цифры от О до 7 устанавливают цвет INK, аоли CAPS SHIFT нажата» я
цват PAPBR, аоли CAPS SHIPT на нажата. При нажатой цифры в В-ре-
жнма будут вывадаиы CHRB17 и CHR код цвета. Волн и вто нрамя выла
нажата CAPS SHIPT* то будут ныяаданы CHR6I7 и CHR код цвета.

Воли вы хотита уничтожить вводвмоа, нажмнта DBLBTE дна рана:
поела верного раеа на екране ныеиетнтея 'I' нли что-нибудь еще-не
иугаИтееь и нажмите DBLBTB еще рае. Управление курсором тоже не
работает до тех пор» пока куреор не выйдет к предыдущему управля-
ющему енмнолу. Так же я а-режиме:

• аналогично CHR319 и CHR60 - нормальная яркоеть

9 аяалогнчио CHR319 н CHR61 - повышенная яркоеть
CAPS SHIFT я 8 дает CHR318 и CHR60 - немерцающее ноле
CAPS SHIFT н 9 дает CHR318 и CHHBt - мерцающее ноле

В L - режиме:

CAPS SHIFT я Э дает CHR320 и CHRBO - обычныИ вывод
CAPS SHIFT и 4 дает CHReaO и CHR31 - нинероныИ вывод
ATTR - вто функция» имеет еледующнИ формат:
ATTR ('отрока4, * столбец*)

Значения двух параметров функции подобны значению параметров в
AT, в ревультате выполнения будут выведены вначення атрибутов для
соответствующей новицни вкрана. Выводимый результат вто число»
представляющее сумму четырех чисел:

1, 128 - если внакомеето мерцающее; 0 - если обычное

2. 64 - если повышенная яркоеть: О - если обычная
3.8а- код цвета фона

4, Код цвета тона
пример: внакомеето мерцающее» обычноИ яркости» желтыИ фон»
СнннИ тон.
128 4 0 ♦ (8*6) ♦ 1 • 177
проверим вто» выполнив:

PRINT AT 0»0; FLUSH 1; PAPBR 6; ink I; " ATTR <0»0)
упражнение:

1. PRINT "в"; CHR88; OVER 1; "/";

вдееь "/* перечеркнет "В". Этим способом можно выводить слона ив
комбинированных знаков иа ZX SPBCTRUH; две фона или два топа дают
фон» одни не них дает тон. вто интересное свойство: если вы пов-
торите вывод одного символа дважды» то он пе будет отображая.
Так» еслп дать:

PRINT CHR88; OVBR 1; "/"
дополнительно к описанному выше утверждению» то мы в результате
увидим "В" пе перечеркнутое "/"• Так ли вто ?

2. Выполним:
PAPBR О: INK О

действуют ли втн операторы в ннжиеИ части вкрана?
что мы увидим» если добавить
BORDER О

3. Выполним программу:

10 POKE 22927+RND+704 • RNDM27
20 GO ТО 10

Результатом программы явнтоя омена цветов звакомест» распреде-
ленных по вкрану случайным образом. Возможно вы увидите смену
цветов на диагональных ступенях - вто является следствием того»
что мы пользуемся кваэнолучайиым распределением» которое лишь

прпближенио воспроизводят случайное распределение.

Введем вручную или с помощью оператора LOAD программу для вво-
да шахматных фигур из гл.14, и введем программу разбивки экрана
под шахматную доску:

5 REM DRAW BLANKBOARD
10 LET BB»}: LET BW = 2: REM RED AND BLUE FOR BOARD
15 PAPER BW: INK BB: CLS
20 PLOT 79,128: REM BORDER
30 DRAW 65,0: DRAW X), -65
40 DRAW -65,0: DRAW 0,65
50 PAPER BB
60 REM BOARD

70 FOR N»0 TO 3: FOR M*0 TO 3
80 PRINT AT 6>2*N,11+2*M; " "
90 PRINT AT 7+2*N,10+2*M; " "
100 NEXT M: NEXT N
110 PAPER 8

120 LET PW«6: LET PB*5: REM COLOURS OF WHITE AND BLACK

PIECES

200 DIM BS (8,8): REM POSITIONS OF PIECES
205 REM SET AP INITIAL POSITION

2 10 LET BB (1) *"RNBQKBNR": REM LITTLE LINE 240
220 LET BS (2) «"PPPPPPPP": REM LITTLE LINE 230
230 LET BS (7) «"PPPPPPPP": REM BIG LINE 220
240 LET BS (8) *"RNBQKBNR": REM BIG LINE 210
300 REM DISPLAY BOARD

3 10 FOR N«1 TO 8: FOR M*1 TO 8
320 LET BC»CODE BS (N, M): INK PW

325 IF BC*CODE " " THEN GO TO 350: REM SPACE

330 IF BOCODE "Z" THEN INK PB: LET BC*BC-32: REM LOWER

CA&E FOR BLACK
340 LET BC-BC+79: REM CONVERT TO GRAPHICS
350 PRINT AT 5+N.9+M; CHRSBC
360 NEXT M: NEXT N
400 PAPER 7: INK 0




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Алгоритмы - Подпрограммы связанные с выводом на экран: переход к предыдущему символу по экранному адресу, переход на следующую экранную линию, переход к предыдущей линии экрана, как определить адрес атрибута для заданного символа с координатами XY, переход к следующей строке атрибутов. Быстрая процедура умножения.
Конструктор - Не секрет,что российские "паяльники" приноровились подключать к "SРECCY" все, что угодно-начиная от З,5 дисководов и винчестера и заканчивая картриджами от "Денди" и "Sоnу рlaу statiоn".
Писать на стенках туалета - афоризмы на партах, стенах, в газетах. Туалет как зеркало души.
Навезли новья - Обзор новинок ПО: Twilight , Quadrax, Kolobok Zoom-2, Белый Орел: Товарищ неизвестен.
FIDO начинающим - Модем. Первые шаги. - Работа с BBS.

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