[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]