Диалекты бейсика для ZX Spectrum 1992 г.

Beta Basic - Работа со спрайтами.


РАБОТА СО СПРАЙТАМИ_

GET, PLOT, CHR$ 0, CHR$ 1

Способности оператора GET не ограничены тем, что мы описали в предыдущем разделе. Этот оператор предоставляет также возможность работать со спрайтами, позволяя получать неплохие результаты в области мультипликации.

Режим [Е| в данном спучае не отключается автоматически после ввода одного символа, как зто происходит в редакторе, возврат к курсорам [L] или [С| необходимо делать принудительно повторным нажатием CS/SS

Формат оператора таков:

GET < строковая переменная >, < горизонтальная координата >,

<вертикальная координата> [, <ширина>, <длина>] [;<тип>]

Действие оператора элементарно: он помещает в <строковую переменную> («фотографирует») прямоугольную область экрана. <Ширина> и <длина> этой области измеряется в знакоместах, < координаты > верхнего левого угла — в пикселях. Сделать «отпечаток» с этой области можно, выводя <строковую переменную> операторами PRINT или PLOT в любое место экрана. При этом с помощью CSIZE возможно изменение масштаба изображения (CSIZE в нашем «фотопроцессе» играет роль увеличителя). Аналогия с фотографией на этом не исчерпывается: значения параметра <тип> определяют, будет ли наша «фотография» черно-белой или цветной. Нулевое значение параметра указывает на то, что запомнить следует только изображение, а единица — изображение с атрибутами. По умолчанию параметры принимают следующие значения: <ширина>=<длина> = 1, <тип>=0. Отметим, что установка CSIZE 0 не позволит Вам воспроизводить картинку с помощью PRINT. Перейдем к примеру.

5 CSIZE 8

10 PRINT "BOMM!"'""BAMM!": REM Вывели две надписи 20 CIRCLE 16, 159, 5: REM В промежутке нарисовали окружность 30 GET А$, 0, 175, 5, 4; 0: REM «Сняли» надписи вместе с окружностью

40 PRINT AT 0,0; OVER 1; А$: REM Стираем нашу картинку 50 FOR 1=1 ТО 150: REM Вновь и вновь, двигаясь по диагонали... 60 PLOT I, 175—1, А$: REM ...воспроизводим картинку... 70 OVER 1: PLOT I, 175-1, A$:OVER 0:REM ...и тут же снова ее

стираем 80 NEXT I

Ну, чем не мультипликация!

Мы убедились, что оператору GET «по зубам» и символы, и графика. Остается выяснить, что же представляет собой полученная нами переменная А$. Это может понадобиться для конструирования спрайтов «в уме», без помощи оператора GET, что, как мы покажем, может дать определенные удобства.

Первым элементом такой переменной всегда является управляющий символ CHR$ 0 или CHR$ 1 и это сразу выделяет спрайты из числа обычных символьных переменных Код 0 говорит о том, что за ним следуют 8 байт, которые должны интерпретироваться как закодированное изображение символа 8x8 пикселей (аналогично тому, как кодируются символы UDG). Код 1 предупреждает интерпретатор о том, что эти 8 байт предваряются еще одним, содержащим атрибуты знакоместа. Таким образом, эти коды совпадают со значением параметра <тип> оператора GET. Каждое последующее знакоместо (если их больше одного) представлено таким же блоком из управляющего кода 0 или 1 и следующих за ним 8 или 9 байт. При необходимости между блоками располагаются коды управления курсором (символы CHR$8...11, стр.245), которые задают взаимное расположение знакомест. Попробуйте проанализировать содержимое переменной А$, полученной в приведенном примере, и «анатомия» спрайтов будет для Вас понятнее.

Однократное применение GET не позволит Вам получить спрайт с формой, отличающейся от прямоугольной. Однако «склеив» (с помощью плюса или JOIN) несколько строковых неременных, «разбавляя» их кодами управления курсором, можно получить «суперспрайт» самой экзотической формы — даже состоящий из несвязанных фрагментов. Фантастические возможности появляются при объединении в одну переменную обычных текстовых строк и строк-спрайтов, а также спрайтов типов 0 и 1! Предоставим Вам возможность поэкспериментировать самостоятельно.




СОДЕРЖАНИЕ:
  1. Laser Basic - Вывод спрайтов на экран; Вывод на экран части спрайта; Перенос атрибутов; Преобразование окна экрана; Наборы переменных; Перемещение спрайтов; Наложение спрайтов; Копирование изображения с экрана в спрайт; Преобразование спрайтов; Скроллинг пейзажа; Изменение размеров области спрайт-файла; Вспомогательные графические операторы и функции; Определение столкновений спрайтов; Сервисные операторы и функции; Процедуры; Загрузка и запись программ.


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

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



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

Похожие статьи:
Les oeuwrez - рассказ "Убийство".
С миру по биту - интервью с группой STEP (создателями Spectrofon и Звёздного Наследия).
Complex 99, And The East/West Divide
Ликбез - полный дизассемблер ПЗУ (часть 34).
Давайте посмеемся - Результаты конкурса ответов на вопросы. Конкурс на самый смешной анекдот , случай из жизни. 25 анекдотов от редакции.

В этот день...   19 апреля