Создание игровых юнитов

Рейтинг: 0Ответов: 2Опубликовано: 03.05.2011

К примеру, есть класс Warrior и я хочу сделать X объектов. В какой список их лучше поместить, вектор?

Ответы

▲ 2Принят

Я бы помещал в лист, и итератором при необходимости обходил его. Смотри при добавлении в вектор нового элемента выделяется новый участок памяти в который копируются старые элементы и новый и так же с удалением, а в листе удаление и добавление происходит на порядок быстрее.

Вот даже почитать можешь на эту тему

▲ 2

Односвязный список (list). Тем более что у Вас наверняка будут не только Warrior'ы но и другие игровые персонажи/объекты, нуждающиеся в обработке каждую итерацию игрового цикла. На мой взгляд, лучше всего было бы реализовать некий базовый класс (интерфейс типа IGameObject), в котором были бы заранее размечены виртуальные функции типа GameTick и т.п. При такой организации Вам не придется отдельно обрабатывать списки зданий, отдельно воинов и т.д. Просто, для каждого объекта вызовете функцию GameTick... А C++ и полиморфизм позаботятся об остальном. Единственное "но" - не забывайте освобождать всю память выделенную выбывающим из игры объектам...

К вопросу о программировании игр могу посоветовать Noel Llopis. "C++ For Game Programmers" (можно найти и скачать pdf), к сожалению на английском, однако подход мне очень понравился. И еще вот эту Ron Penton. "Data structures for game programmers" - тоже, на мой взгляд, очень хорошая книга...