Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование с нуля - это совсем просто! 99) Программирование спрайтовых игр: Работа со спрайтами


Школа программирования

99) Программирование спрайтовых игр: Работа со спрайтами

Сегодня - продолжение работы с BlitzBasic. Последний выпуск на эту тему - см. N 96.

А следующий выпуск - юбилейный :)
В этой связи читателям рассылки - всем 10594 живым существам :) - полагаются подарки. Какие? Решайте и заказывайте сами.
Хотите, спою для вас, хотите, спляшу :-)

Работа со спрайтами

Главное предназначение BlitzBasic (версии BlitzPlus) - обработка спрайтов. Ведь любая двумерная игра основывается прежде всего на этом фундаментальном понятии.

Спрайт - это графический элемент, подготовленный, например, в редакторе Paint или PhotoShop, который используется в программе для красивого отображения некоторого объекта. Как правило, главный герой во многих играх - это спрайт, нарисованная художником красивая картинка, которая рисуется в разных местах экрана в зависимости от действий пользователя. В коммерческих спрайтовых играх практически все элементы игры представляют собой спрайты, базовыми функциями отрисовки (квадрат, окружность, цветная точка) пользуются достаточно редко.

Спрайт имеет еще одну замечательную особенность - он может выводиться на экран "прозрачным". То есть все точки исходной картинки спрайта, закрашенные некоторым цветом, принятым за прозрачный, при ее выводе на экран пропускаются. Это позволяет достигать различных эффектов реалистичности движения.

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

Загрузка спрайта

Загрузка спрайта в программе выполняется командой

LoadImage ()

где в скобках указывается строка - путь к файлу с рисунком спрайта. Значение, возвращаемое данной функцией, запоминается в любой переменной, и в дальнейшем обращение к этой переменной аналогично обращению к данному спрайту.

Демо-версия BlitzBasic поддерживает работу только с файлами в формате .bmp. Полная также понимает форматы .jpg и .png.

Например:

MySprite = LoadImage("c:\mygame\data\spr01.bmp");

В результате в память программы загрузится спрайт-изображение из файла spr01.bmp, а в переменную MySprite запишется некоторый идентификатор, связанный с данным изображением.

Вывод спрайта на экран

Вывод спрайта на экран происходит с помощью команды DrawImage. Первый ее параметр - идентификатор спрайта (переменная, использовавшаяся в команде LoadSprite). Второй и третий - координаты вывода спрайта на экран (x,y) , начиная с верхнего левого.

Функции определения местоположения курсора

В BlitzBasic не существует встроенных функций отображения на экране курсора. Программисту приходится поддерживать такую возможность самостоятельно. Спрайты в данной ситуации представляются самым подходящим вариантом, так как можно нарисовать свой собственный красивый курсор, который за счет прозрачности будет аккуратно накладываться на изображение.

Для вывода такого курсора надо, очевидно, знать текущие координаты мыши (она движется по экрану, даже если стандартный курсор и не показывается). Эти координаты получают с помощью функций без параметров MouseX() (по горизонтали) и MouseY() (по вертикали).

Тогда возможный вариант программы, показывающей на экране свой собственный оригинальный курсор (его предварительно надо подготовить и записать в файл cursor.bmp в каталог с текстом данной программы) может выглядеть так:

Graphics 800,600,16

SetBuffer BackBuffer()

MyCursor = LoadImage("cursor.bmp")

While Not KeyHit(1)
Cls

DrawImage MyCursor,MouseX(),MouseY()

Flip
Wend

Задание.
Усовершенствуйте данную программу так, чтобы в ней использовалось два курсора, но чтобы один двигался только по вертикали, а другой - только по горизонтали (у каждого координата изменялась бы синхронно с мышкой, но либо по оси x, либо по оси y).


(c) 2004-2006 Сергей Бобровский bobrovsky@russianenterprisesolutions.com

Школа программирования с нуля
Все предыдущие выпуски базового курса тут:
http://russianenterprisesolutions.com/sbo/

Дизайн рассылки: Алексей Голубев - Web-дизайн и web-программирование


В избранное