Программирование игр для Windows. Советы профессионала


Структуры данных в компьютерных играх


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

Для примера рассмотрим, что требуется иметь для статического объекта. Под статическими я понимаю объекты, которые игрок может подобрать по ходу игры (в то время как динамическими я буду называть те объекты, которые могут перемещаться самостоятельно). Статический объект не совершает никаких действий, он просто лежит в определенном месте игрового пространства. Когда ваш герой находит такой объект, он поправляет свое здоровье, подкрепляет упавшие силы, пополняет арсенал и т. д. Листинг 11.1 содержит возможную структуру данных такого объекта.

Листинг 11.1. Структура данных статического объекта.

typedef struct static typ

{

int x,y; //позиция объекта

int type; // тип объекта: еда, энергия или здоровье

char *data; // указатель на растровое изображение объекта

int state; // состояние объекта

int amount; // поле для уточнения типа объекта

} static, *static ptr;

Для начала вполне можно использовать Листинг 11.1, а потом дополнять его необходимыми полями. Мы могли бы создать связанный список с использо­ванием указателей, однако если объектов в игре немного, то лучше использовать массив, описав его следующим образом:

static stuff

[10]

Осталось инициализировать массив stuff, а затем, работая со статическими объектами, ссылаться на него.

Другой пример. Давайте рассмотрим, чем обладает в игре сам игрок. В нашей демонстрационной игре Warlock игрок - это волшебник, он имеет заклинания, здоровье, несколько жизней, а также может собирать различные предметы. Кроме этого, нам понадобятся различные растровые изображения его рук, видимых на переднем плане экрана. Листинг 11.2 показывает первое приближение обходимой структуры данных.


Листинг 11.2.


Начало  Назад  Вперед



Книжный магазин