2017-02-22 12 views
0

Я пишу игру на C++ с графической библиотекой SDL2. Я использую классы с наследованием для определения объектов в моей игре.Способы обновления объектов игры

Entity 
-> Player 
-> BadGuy 
-> Bullet 

В этом примере Player, BadGuy и Bullet являются подклассами Entity. Я делаю это так, чтобы я мог хранить список Entity в своей игре и перебирать каждую сущность для обновления и рендеринга. Таким образом, каждый объект будет иметь уникальный update(), чтобы определить их поведение.

Проблема, с которой я сталкиваюсь, заключается в том, что в методе обновления разные сущности не могут «видеть» друг друга. Если экземпляр Player хочет проверить, сталкивается ли с ним экземпляр Bullet, мне нужно будет передать список всех сущностей в качестве аргумента для update() для проверки. Это не кажется настолько плохим, пока вы не рассмотрите все вещи, которые может понадобиться для использования метода обновления. Карта игры, информация о состоянии произвольной игры и другие вещи должны быть переданы в качестве аргументов для использования update().

Есть ли в этом легкое решение? Или лучший, но все же похожий шаблон программирования для использования? Любой совет будет принят во внимание.

ответ

2

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