[an error occurred while processing this directive]
─PL65
─LS1
─SRP 90
─TM0
─HM2
─DH//-|P-//
─LM5
│..................................................................<
4.3 Дополнительные графические возможности
4.3.1 Графический Пакет Прикладных Программ (Graphics Rom)
Вы уже познакомились с простейшими графическими командами,
такими как MOVE, DRAW и PLOT. С помощью этих команд вы можете
выводить на экран монитора различную графическую информацию и
создавать достаточно сложные изображения. Следует отметить, что
возможностей этих команд обычно бывает достаточно для
графического оформления большинства прикладных программ.
В данном разделе описываются дополнительные графические
команды, которые могут быть использованы в программах, создающих
произвольные графические изображения. Перечислим коротко
возможности этих команд :
- создание небольших по размерам графических обьектов
(СПРАЙТОВ), которые можно выводить в любом месте
экрана и перемещать по экрану поверх существующего
изображения;
- рисование окружностей, элипсов, дуг элипсов и других
кривых линий;
- закрашивание областей произвольной формы;
- поворот осей координат;
- создание трехмерных изображений;
- использование шрифтов с произвольным размером букв;
- использование графических возможностей языка LOGO и др.
Все эти дополнительные графические возможности предоставляются
графическим пакетом прикладных программ (GRAPHICS ROM), который
располагается в постоянном запоминающем устройстве (ПЗУ или ROM
от английских слов Read Only Memory - память только для чтения).
Для того, чтобы ваша программа смогла воспользоваться ими,
необходимо обеспечить присутствие графического ROMа в вашем
компьютере. Это можно сделать двумя способами, или вставить сам
ROM в компьютер, или загрузить его копию в оперативную память.
Графический ROM может находиться в одном из двух состояний:
включен или выключен. Включается (выключается) графический ROM
командой *FX162 (*FX162 128). В начале сеанса работы с
графическим ROMом его необходимо включить.
Все новые графические команды имеют следующий формат :
*<имя команды> [<аргумент1>(,)<аргумент2>(,)...(,)<аргументN>]
т.е все команды начинаются на звездочку и, кроме того,
некоторые команды могут иметь аргументы. В качестве аргументов
можно использовать или числа, или целые переменные с именами от
А% до Z%. Аргументы должны быть отделены друг от друга пробелами
или запятыми. В главе 5, посвященной операционной системе,
подробно описаны вопросы, связанные с использованием команд,
начинающихся символом * в программах на Бейсике.
Список дополнительных графических команд можно вывести на
экран с помощью команды
*HELP GRAPHICS
В этом списке, кроме имени команды, указан так же ее
синтаксис.
Рассмотрим теперь более подробно некоторые из возможностей
графического ROMа.
4.3.2 Спрайты
Что такое спрайты? В настоящее время спрайты входят в
стандартный набор графических средств практически любой ПЭВМ.
Спрайт - это небольшой графический обьект, который вы сами можете
создать и использовать его в своих программах. Спрайты можно
выводить в любое место экрана и перемещать по экрану.
Достоинством спрайтов является тот факт, что они выводятся как бы
поверх существующего изображения, а не вместо него. С помощью
спрайтов можно, например, легко организовать перемещение одних
графических обьектов на фоне других. Спрайты могут быть
реализованы аппаратно или программно. В первом случае выводом
спрайтов на экран занимается специальный видеопроцессор, а в
случае программной реализации работа видеопроцессора имитируется
специальной программой.
На примере графического рома вы можете познакомиться с
программной реализацией спрайтов.
Работа со спрайтами включает в себя следующие элементы :
- резервирование памяти для хранения образов спрайтов;
- создание и удаление спрайтов;
- вывод спрайтов на экран;
- запись образов спрайтов на устройства внешней памяти;
- загрузка образов спрайтов в оперативную память.
Резервирование памяти для спрайтов. Эту операцию необходимо
проводить в начале каждого сеанса работы со спрайтами.
Резервирование области памяти компьютера осуществляется с помощью
команды *RESERVE. Все спрайты ( точнее сказать определения
спрайтов ), которые вы будете создавать и (или) загружать с
диска, будут автоматически размещаться в этой области. Формат
команды следующий :
*RESERVE <адрес начала области> <адрес конца области>
Область должна находиться в пределах от &Е00 до &2FFF (адреса
должны быть заданы шестнадцатиричными числами). Вот пример
использования команды
*RESERVE 2500 2FC0
Для тех, кто плохо знаком с картой памяти компьютера,
рекомендуем следующий способ резервирования памяти:
10 MODE 1
20 LE=1000
30 DIM AREA LE
40 OSCLI "RESERVE "+STR¤~AREA+" "+STR¤~(AREA+LE)
50 . . . . . . . . . . . . .
60 продолжение программы
70 . . . . . . . . . . . . .
В приведенном примере первые четыре строки программы
резервируют область памяти в 1000 байт. В строке 20 задается
длина блока. В строке 30 с помощью команды DIM резервируется блок
памяти заданной длины. А в строке 40 границы этого блока
передаются в качестве параметров команде *RESERVE. Таким способом
вы можете зарезервировать для спрайтов область памяти
произвольной длины, не указывая адреса границ области в явном
виде. (Информация о встроенной функции STR¤ приводится в
приложении).
Если в процессе создания новых спрайтов выяснится, что вы
зарезервировали слишком мало памяти, графический ROM выдаст
сообщение
No room
В этом случае для продолжения работы необходимо или удалить
ненужные спрайты с помощью команды *RESET, или зарезервировать
большее количество памяти, для чего надо выполнить следующую
последовательность действий: записать все спрайты на диск с
помощью команды *PUT; удалить все спрайты из памяти компьютера
командой *RESET 0,31; зарезервировать область памяти требуемого
размера и загрузить спрайты с диска с помощью команды *GET.
Создание и удаление спрайтов. К созданию спрайтов можно
приступить только после того, как была зарезервирована область
памяти с помощью команды *RESERVE.
Создавать спрайты можно только в первых трех экранных режимах,
т.е. в 0,1 или во 2-ом.
Спрайты создаются в так называемом редакторе спрайтов. Для
входа в редактор необходимо подать команду
*DESIGN <номер спрайта> <ширина> <высота>
где номер спрайта - число от 0 до 31;
ширина и высота - числа от 1 до 3.
Войдя в редактор, вы увидете, что на экране появилась
прямоугольная сетка и палитра. Ваша задача состоит в том, чтобы
заполнить некоторые ячейки сетки цветами из палитры. Выбрать цвет
в палитре вы можете с помощью клавиш со стрелками. Для
перемещения курсора по сетке используйте клавиши:
X - вправо
Z - влево
: - вверх
/ - вниз.
Нажав на клавишу RETURN вы закрасите выбранную ячейку текущим
цветом, а нажав на SHIFT очистите ее.
По мере заполнения сетки вы увидете, что в правом верхнем углу
экрана появляется уменьшенная копия вашего рисунка. Это и есть
тот спрайт, созданием которого вы занимаетесь.
Когда работа будет закончена, вы можете перейти к созданию
следующего (по номеру) спрайта с помощью клавишы TAB, или
вернуться в BASIC, нажав на ESCAPE.
Для изменения уже существующего спрайта надо войти в редактор
спрайтов с помощью команды
*ALTER <номер спрайта> (<новый номер>)
где необходимо указать номер спрайта, который вы хотите
редактировать, а так же можно указать новый номер этого спрайта.
Для удаления спрайтов используется команда
*RESET <номер спрайта> (<до номера>)
С помощью этой команды вы можете удалить как отдельный спрайт,
так и группу спрайтов, если указать два параметра. Для того,
чтобы удалить из памяти компьютера все спрайты можно подать
команду
>*RESET 0,31
Вывод спрайтов на экран. Выводить спрайты на экран необходимо
в том же экранном режиме, в котором они были созданы. Для вывода
спрайта предназначена команда
*IN <номер спрайта> <X,Y>
где X,Y - определяют место на экране, куда будет выведен спрайт.
Если вы подадите несколько команд *IN с разными значениями
координат, то вы увидете, что каждая новая команда заставляет
спрайт переместиться со старого места на новое. Важно отметить,
что такие перемещения спрайтов не вызывают никаких изменений в
старом содержимом экрана. То есть спрайты выводятся как бы поверх
существующего изображения.
Для того чтобы убрать спрайт с экрана надо подать команду
*OUT <номер спрайта>
Кроме команды *IN для вывода спрайта на экран можно
воспользоваться командой
*IMAGE <номер спрайта> <X,Y>
В отличие от команды *IN, после подачи нескольких команд
*IMAGE с разными координатами на экране будут появляться новые
копии спрайтов.
Запись спрайтов на диск и загрузка с диска. Определения всех
спрайтов, которые вы создали, находятся в оперативной памяти
компьютера. Если вы хотите сохранить некоторые из определений для
дальнейшей работы, необходимо записать их на диск. Это можно
сделать с помощью команды
*PUT <имя файла> <номер спрайта> (<до номера>)
Для записи всех спрайтов в файл Sprites можно подать следующую
команду:
>*PUT "Sprites",0,31
Для загрузки определений спрайтов с диска используется команда
*GET <имя файла>
Перед тем как загружать определения спрайтов в оперативную
память, необходимо зарезервировать для них место с помощью
команды *RESERVE.
4.3.3 Команды общего назначения
В графических экранных режимах принята следующая система
координат: левая нижняя точка экрана имеет координаты 0,0, а
правая верхняя - 1279,1023 (см.4.2.1). С помощью команды
*SCALE <Xл> <Yн> <Xп> <Yв>
вы можете изменить систему координат, задав новые координаты
левой нижней и правой верхней точек экрана. Кроме того с помощью
команды
*ROTATE (<угол>) (<X,Y>)
вы можете заставить все последующие графические команды
выполняться с поворотом вокруг точки X,Y на указанный угол (по
часовой стрелке).
Команда
*PRINT <строка> <X,Y> (<ширина><высота>)
печатает строку на экране, начиная с точки с координатами X,Y.
При этом у вас есть возможность задать ширину и высоту букв.
Для рисования окружностей можно воспользоваться командой
*CIRCLE <X,Y> <радиус>,
где X,Y - координаты центра. Цвет окружности задается с помощью
команды GCOL. Команда
*ARC <K> <X,Y> <ширина, высота> <нач.угол, кон.угол>
позволяет нарисовать дугу элипса с центром в X,Y, с заданными
шириной, высотой, начальным и конечным углами. Угол отсчитывается
от вертикали по часовой стрелке. Параметр K уточняет конкретную
функцию команды и действует аналогично параметру в команде PLOT
(см.4.2.3).
Команда
*FILL <X,Y> <логический номер цвета>
Закрашивает экран, начиная с точки с координатами X,Y, цветом с
указанным логическим номером. Особенностью этой команды является
то, что она меняет цвет только у тех точек, которые были окрашены
тем же цветом, что и точка (X,Y), а все остальные цвета
рассматривает как граничные. Таким образом с помощью этой команды
можно легко окрасить замкнутые, точнее окруженные границей из
других цветов, области произвольной формы.
были окрашены
тем же цветом, что и точка (X,Y)─PL63
[an error occurred while processing this directive]