Работа с ZX-Spectrum 1993 г.

Глава 17 - графика.


ГЛАВА 17

ГРАФИКА

Краткое содержание: PLOT, DRAW, CIRCLE, POINT, pixel

Эта глава описывает возможности компьютера ZX SPEQTRUM по отоб-
ражению графической информации. Экран компьютера содержит 22 строки
по 32 символа в каждой. Что составляет 22 * 32 = 704 символьные позиции.
Как Вы уже поняли из 16 главы, каждая символьная позиция представляется
квадратом 8*8 точек, называемых пикселями.

Пиксель задаётся двумя числами, его координатами. Первое задаёт ко-
ординату X, то есть удаление (в пикселях) от левой границы экрана, второе
задаёт координату Y, удаление от нижней границы экрана. Координаты
записываются в скобках, i-ак: (0,0), (255,0), (0,175), (255,175) задают соответст-
венно нижний левый, нижний правый, верхний левый и верхний правый углы
экрана.

Оператор PLOT х, у вызывает высвечивание закрашивающим цветом
(INK) пикселя с указанными координатами.

Например, программа:

10 PLOT INT (RND*256),INT (RNDM76)
20 INPUT a$
30 GO TO 10

будет высвечивать некоторый случайный пиксель при каждом нажатии
ENTER или любой другой клавиши.

Есть и более интересные программы. Например, следующая программа
вычерчивает график функции SIN х, для х в интервале от 0 до 2*Р1:
10 FOR п=0 ТО 255
20.PLOT n,88+80*SIN (п/128*Р1)
30 NEXT n

или программа:

10 FOR n=0 TO 255
20 PLOT n,80*SQR (n/64)
30 NEXT n

которая чертит график SQR x (часть параболы) в интервале от 0 до 4.

Помните, что координаты пикселей отличаются от адресации строк и
позиций в подкоманде AT.

Пользуйтесь диаграммой из главы 15.

Помощь при построении изображений Вам могут оказать операторы
DRAW и CIRCLE.

Оператор DRAW чертит линию, заданную в форме:
DRAW х, у

Началом линии является пиксель, на котором завершился один из пре-
дыдущих операторов PLOT, DRAW или CIRCLE (этот пиксель называется те-
кущей PLOT- позицией. Операторы RUN, CLEAR, CLS и NEW устанавливают
её в левый нижний угол экрана). Таким образом, оператор DRAW задаёт
длину и направление вычерчивания линии, но не начальную точку.

Поэкспериментируйте с такими командами:
PLOT 0,100: DRAW 80,-35
PLOT 90,150: DRAW 80,-35

Чертить можно также в цвете, но при этом надо иметь ввиду, что цвет
устанавливается для целой символьной позиции и не может быть задан для
отдельного пикселя.

Следующая программа демонстрирует это:

10 BORDER 0: PAPER 0: INK 7: CLS : REM black out screen
20 LET xl=0: LET yl=0: REM start of line
30 LET c=l: REM for ink colour, starting blue
40 LET x2=INT (RND*256): LET y2=INT (RND* 176):

REM random finish of line
50 DRAW INK c;x2-xl,y2-yl
60 LET xl=x2: LET yl=y2:

REM next line starts where last one finished
70 LET c=c+l: IFt=8 THEN LET c=l: REM new colour
80 GO TO 40

Вы можете использовать в операторах PLOT и DRAW управляющие
символы PAPER, INK, FLASH, BRIGHT, INVERSE и OVER так же, как и в опе-
раторах PRINT и INPUT. Управляющие символы записываются между ключе-
вым словом и координатами и оканчиваются запятой или точкой с запятой
(см. строку 50)

При помощи DRAW можно также вычертить отрезок дуги, используя для
этого дополнительное число, задающее угол (в радианах) этой дуги:
DRAW х, у, а

Если "а" положительно, то дуга вычерчивается влево, а если отрицатель-
но, то вправо. При "а" равном 2*Р1 вычерчивается полная окружность.

Например:

10 PLOT 100,100: DRAW 50,50,PI

вычертит полуокружность с начальной точкой (100,100) и конечной точ-
кой (150,150). Вычерчивание начнётся в. направлении юго-восток, а за-
кончится в направлении на северо-запад.

Оператор CIRCLE вычерчивает полный круг, задаваемый координатами
его центра и радиусом:

CIRCLE х,угг

Как и в операторах PLOT и DRAW, Вы можете указать в этом операторе
различные цвета.

Функция POINT возвращает характеристики цвета заданного пикселя.
Например, строка программы:

CLS : PRINT POINT (0,0): PLOT (0,0): PRINT POINT (0,0)
выведет число 56, что означает
PAPER 7: INK 0

Допускается также задавать управляющие символы INVERSE и OVER в
операторе PLOT. По умолчанию они предполагаются равными 0 (отключено),
но вы можете задать и 1, при этом:

PLOT INVERSE 1 - устанавливает для заданного пикселя цвет

фона;

PLOT OVER 1 - изменяет цвет пикселя на противоположный,

если был цвет тона, то становится цвет фона
и наоборот;

PLOT INVERSE 1; OVER 1 - сохраняет цвет пикселя без изменения,

но меняет .текущую PLOT.-позицию.
Другой пример использования OVER с записью чёрным по белому:

PLOT 0,0: DRAW OVER 1;255,175
вычерчивает линию по диагонали.
Теперь попробуйте:

PLOT 0,0: DRAW INVERSE 1;255,175
и перечертите её командой:

DRAW OVER I;-255,-175
это не изменит картинку, так как при черчении как вперёд, так и назад
используются одни и те же пиксели.

Имеется способ получения необычных цветов в одном квадрате с
использованием определяемых пользователем символов.
Выполните эту программу:

1000 FOR п-0 ТО 6 STEP 2

1010 POKE USR "a"+n,BIN 01010101: POKE USR "а"+п+1,

BIN 10101010
1020 NEXT n

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

Ещё один пример, программа, которая строит график некоторой
функции. На первый её запрос Вы отвечаете числом 'N' задающим область
значений аргумента (т.е. график будет строиться для значений аргумента в
диапазоне от -N до +N). Второй ответ - это выражение в виде символьной
строки, задающей функцию, использующую 'X' в качестве аргумента:
10 PLOT 0,87: DRAW 255,0
20 PLOT 127,0: DRAW 0,175
30 INPUT S,E$
35 LET T=1

40 FOR F-0 TO 255

.50 LET X-(F-128)*S/128: LET Y-VAL E$

60 IF ABS Y87 THEN LET T«0: GO TO 100

70 IF NOT T THEN PLOT F,Y+88: LET T-l: GO TO 100

80 DRAW l,Y-OLDY

100 LET OLDY-INT (Y+$*0.5)

110 NEXT F

Выполните её, введя 10 для числа 'N' и '10*TAN X' для функции. После
этого будет вычерчен график функции Tg X при X, изменяющемся от -10 до
+10.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Эхо-конференции - Список зарегистрированных эхо-конференций сети SPbZXNet. Список эхо-конференций гейтуемых из FIDO.
E-Mail - Cейчас я (TJ) буду отвечать на ваши письма: Moroz 1999, Riskey, Scalessman.
B.B.S. Новости - О новой B.B.S. - Ditronik.
Реклама - реклама и объявления.
Nobunagas - проект игры Seens.

В этот день...   28 марта