Я уже долго пытаюсь придумать, как можно организовать игровую механику классического Worms
. Мне удалось найти разные варианты, но все они со своими клопами и абсолютно мне не нравятся. Чувствую, что существует удобное решение, но никак не могу его нащупать, поэтому - прошу помощи.
Итак, рассмотрим уровень классического Worms
, он содержит:
Worms
не так, но так интереснее;Для упрощения будем считать, что у юнитов нет здоровья.
В общем-то, это основное. Самое интересное заключается в том, что юниты могут обладать некоторыми особыми свойствами. Например, они могут иметь здоровье, они могут активироваться червем и т.д.
Для упрощения представим, что у нас есть только одно специальное свойство:
Чтобы не строить очередную Звезду Смерти
, я подумал, что можно сделать примерно такое наследование:
Взаимодействие объектов строится через:
virtual void Unit::interact(Unit *_object);
Наследники дополняют поведение своих потомков, все объекты валяются в одном месте, каждый объект сам решает, что он умеет делать и как влиять на другие объекты.
Но есть проблемы.
void Ballistic::interact(Unit *_object)
должен проверять, относится ли _object
ко классу Ballistic
.
void ActivatedByWorm::interact(Unit *_object)
должен проверять, относится ли _object
ко классу Worm
.
И если для ActivatedByWorm
это еще было позволительно, потому что объектов типа ActivatedByWorm
немного, то при учете взрывов придется делать постоянные проверки при просчете баллистики. А если еще учитывать и то, что взрывы могут наносить урон тому, у чего есть здоровье... То понижающее приведение появляется во все больших и больших классах.
Поэтому, мои вопросы такие:
dynamic_cast
хорошим способом проверить у объекта наличие определенного интерфейса?dynamic_cast
, но у меня есть сомнения, что это православный приемлемый способ.Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Веду некий проект, недавно прикупил ноутбук для работы вне дома, сегодня попробовал скомпилировать там свой проект и сильно удивился увидев...
Мне нужно реализовать работу с терминалом из приложенияЗадача состоит в том что бы через ssh на сервер кидать проект,компилить его там,и возвращать...