Официальный сайт студ.городка НГТУ
Программирование и БД » [C++] Как устроить взаимодействие объектов в игре? 

#1  19.04.13 20:36

[C++] Как устроить взаимодействие объектов в игре?

Приветствую!
Не спеша собираю свой велосипед - простенькую 2d игрулю.
Логику выбрал следующую: Имеется базовый класс "Объект", на базе которого строятся все объекты игры.
Встал вопрос о том как правильно описывать взаимодействия всех объектов.
Сейчас есть такая идея: в классе "Объект" создать функцию "ВозвратитьТип()" и виртуальную функцию "Взаимодействие(Объект *pОбъект)".

Первая функция реализуется в наследуемом классе и возвращает условный тип объекта ( трава, камень, забор, взрыв ).
Вторая функция реализует взаимодействие объектов согласно полученному типу объекта pОбъект.

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

Есть ли более изящный вариант?

Offline

#2  19.04.13 22:33

Re: [C++] Как устроить взаимодействие объектов в игре?

у объектов должен быть дирижер. он должен по логике ими управлять. дирижерами должен управлять другой дирижер. и так наверх. трава не должна как то влиять на камень, а камень не должен "двигать" забор. ими должен управлять, скажем, менеджер аллеи.
взаимодействий же может стать много. больше одного. тогда придется писать прослойки между камнем и сараем...

Offline

#3  19.04.13 23:20

Re: [C++] Как устроить взаимодействие объектов в игре?

Правильно ли я понял: Создаем класс "Дирижер", описываем метод "Взаимодействие(Объект *pO1, Объект *pO2)", в котором описываются взаимодействия всех объектов?
т.о. при добавлении новых объектов, изменения терпит только данный метод?

Offline

#4  19.04.13 23:31

Re: [C++] Как устроить взаимодействие объектов в игре?

ну не всех объектов, а тех которые относятся к конкретному дирижеру.

Offline

#5  24.04.13 03:26

Re: [C++] Как устроить взаимодействие объектов в игре?

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

Offline

#6  24.04.13 13:29

Re: [C++] Как устроить взаимодействие объектов в игре?

Все зависит от сложности задачи.
ТУТ показано на пальцах что да как)

Offline

#7  24.04.13 14:15

Re: [C++] Как устроить взаимодействие объектов в игре?

паттернами надо уметь пользоваться. а если руки растут из .опы или без опыта: то можно задачу и не начинать даже (имею ввиду с паттернами)

Исправлено Flinn (24.04.13 14:15)

Offline

#8  24.04.13 15:15

Re: [C++] Как устроить взаимодействие объектов в игре?

Flinn, как я понял, предложенный тобой "дирижор" как раз является паттерном.
Вопрос не в реализации, а в том как лучше устроить всю логику взаимодействия (:

Offline

#9  24.04.13 15:23

Re: [C++] Как устроить взаимодействие объектов в игре?

Banzzaj, ну из ссылки дирижер это наверное Composite (компоновщик)

Banzzaj написал(а):

Вопрос не в реализации, а в том как лучше устроить всю логику взаимодействия (:

точно

Исправлено Flinn (24.04.13 15:24)

Offline

#10  26.04.13 11:55

sav
Профиль

Re: [C++] Как устроить взаимодействие объектов в игре?

Вы сначала не пытайтесь найти паттерны, которые хотите использовать.
Сначала выделите use cases, участников и способы взаимодействия среди них.

Начните реализовывать простейшее взаимодействие, на базе принципов. А не на основе паттернов.

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

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

Offline

Программирование и БД » [C++] Как устроить взаимодействие объектов в игре? 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.026 сек.
Выполнено 14 запросов.