Раздел для начинающих
Мы продолжаем публикацию заметок для начинающих нашего читателя из г. Дубна, т. Скитева.
Сегодня раздел посвящен графике пользователя, так называемой UDG-графике.
При работе с графикой пользователя обычно сталкиваются с определенными трудностями. Для графики отводится 21 символ от "A" до "U" при условии печати этих знаков в графическом режиме (курсор G).
Каждый знак состоит из 6 строчек по 8 символов в каждой. Рисуем матрицу 8x8, и в ней рисуем то изображение, которое хотели бы видеть. Заменим закрашенные квадраты единицами, а незакрашенные - нулем. Затем выберем символ, который хотим заменить своим, например "A", и наберем следующую программу. 10 POKE USR "A",BIN 00111100 20 POKE USR "A"+1,BIN 01011010 30 POKE USR "A"+2,BIN 01111110 40 POKE USR "A"+3,BIN 11100111 50 POKE USR "A"+4,BIN 10100101 60 POKE USS "A"+5,BIN 10100101 70 POKE USR "A"+6,BIN 10100101 80 POKE USR "A"+7,BIN 00100100
Если после выполнения программы перейдем в графический режим (а это выполняется одновременным нажатием клавиш CAPS SHIFT и 9) и напечатаем литеру "A", то увидим изображение паука. Это изображение будет находиться в памяти компьютера до тех пор, пока не будет выключено питание или нажата кнопка "RESET".
Программа заняла восемь строчек, а заменила только одну литеру. Можно сделать эту программу по-другому, используя оператор "READ" и список "DATA".
Правда, предварительно необходимо провести следующую работу - перевести изображение из двоичного кода (а мы создавали его в двоичном коде 0,1) в десятеричный код. Для этого можно, например, воспользоваться оператором "BIN". Дав прямую команду PRINT BIN 00111100, получим результат - 60.
Затем следующая строка PRINT BIN 01011010 дает 50 и т.д. Таким образом определяем значения всех строк и заносим их в список DATA. Теперь программа выглядит так:
10 FOR X=0 TO 7 20 READ Y
30 POKE USR "A"+X,Y 40 NEXT X
50 DATA 60,90,126,231,165,165,165,36
Программа делает то же самое, что и предыдущая.
Продолжение паука (падающий паук).
110 FOR X=0 TO 7 120 READ Y
130 POKE USR "T"+X,Y 140 NEXT X
150 DATA 16,16,16,16,16,16,16,16
160 FOR L=0 TO 20
170 PRINT AT L,3: INK 0; "I"
Здесь черточка под буквой "T" означает, что это вовсе не буква, "T", а тот знак, который закреплен за клавишей "T" в графическом режиме. Пожалуйста не ошибитесь при наборе. Аналогично будем поступать и далее. 180 PRINT AT L+1,3; INK 2;"A" 190 NEXT L
Продолжение паука (убегающий паук).
210 PAUSE 10
220 FOR C=3 TO 30
230 PRINT AT 21,C; " "
240 PRINT AT 21,C+1; INK 2; "A" 250 NEXT C
В разработке "Большие возможности Вашего Спектрума" есть вариант перевода компьютера на русский шрифт, создав русские символы в графическом режиме.
Работая с графикой пользователя можно создавать и более сложные рисунки, состоящие из нескольких символов.
Попробуйте ввести следующую программу. 10 FOR I=0 TO 47 20 READ N
30 POKE USR "A"+I,N 40 NEXT I
50 DATA 0,2,3,7,15,19,83,126 60 DATA 0,64,64,224,240,200,202,126 70 DATA 127,115,120,31,15,4,4,28 80 DATA 254,206,30,243,240,32,56,0 90 DATA 127,187,120,27,15,4,28,0 100 DATA 254,254,30,216,240,32,32,56
Выполним эту программу, результатом будет изменение в графическом режиме символов A,B,C,D,E,F. Если будет сообщение - OUT OF DATA, внимательно проверьте Ваш листинг. В каждой строке DATA должно быть 8 чисел. Теперь можно командой NEW очистить память, листинг исчезнет, но результат работы программы останется (до команды RESET).
Введем следующую программу. Символы, стоящие в кавычках, будем вводить в графическом режиме.
Прыгающие фигурки.
110 BORDER 5; PAPER 5: CLS 120 PLOT 60,71: DRAW 135,0 130 PAUSE 50
140 PRINT AT 10, 14; "AB"; AT 10,18;" " 150 PRINT AT 11,14;"CD";AT 11,18; "AB" 160 PRINT AT 12,14;" ";AT 12,18;"EF" 165 BEEP .05,0 170 PAUSE 50
180 PRINT AT 10,14;" ";AT 12,18;" " 190 PRINT AT 12,14;"EF";AT 12,18;" " 205 BEEP .05,20 210 GO TO 130
По такому принципу можно создавать достаточно сложные рисунки состоящие из большего количества символов до 21.
Эта программа рисует шахматное поле. В строках 50, 60 после кавычек делаем два пробела, затем два черных квадрата в графическом режиме и так далее, всего в строке 32 символа. А в строках 70, 80 сначала два квадрата, затем два пробела и т.д. 10 CLS 20 BORDER 0 30 PAPER 7 40 FOR N=1 TO 6 50 PRINT " 60 PRINT " 70 PRINT " 80 PRINT " 90 NEXT N
Используя эту программу, а также программы, которые мы приводили ранее, сетка на экране, вертикальные цветные полосы, полное окрашивание экрана в основные цвета (R,G,B) и так далее, можно сделать тестовую программу для монитора. Для этого необходимо сделать программу меню, один из вариантов можно найти во втором выпуске "ZX-РЕВЮ" в разделе маленькие хитрости, а в листингах программ соответственно изменить номера.