Первоначально я задавал этот вопрос на сайте programmers.stackexchange.com, потому что я полагал, что ответы будут слишком субъективны для stackoverflow.Тем не менее, в комментариях Muad'Dib указывалось на это:
это, вероятно, лучше подходит для StackOverflow ... Это прямой вопрос, связанный с проблемами программирования и обсуждающийпрограммные решения.Одно решение может быть равно другому, когда выбор между ними субъективен, но обсуждение самой проблемы не так, как некоторые решения явно не применимы.Таким образом, этот вопрос имеет один или несколько хороших ответов, тогда как такие вопросы, как «Какой текстовый редактор лучше?»не ...
Итак, немного подумав над ситуацией (и посмотрев на несколько моделей, которые, похоже, не подходят), вот моя дилемма:
The Set Up
Я разрабатываю простую стратегию игры с битвой.
- Два бойца атакуют друг друга в течение определенного времени.
- Победителем становитсятот, у которого больше всего здоровья после того, как время истекло.
- Прямое вмешательство игроков во время боя отсутствует.Игроки определяют некоторые стратегии для своего бойца перед боем, а «ИИ» (термин используется свободно) определяет, что будут делать бойцы.
- Бой состоит из произвольного таймера, который «тикает» секунд, и бойца.«Скорость атаки (среди прочего) определяет, как часто они что-то делают.
- Помимо объектов-бойцов, есть также« погодный »объект, который может оказывать случайное воздействие на окружающую среду способностей бойца.
- Вся эта вещь просто проходит каждую секунду, эффекты и атаки окружающей среды определяются и выполняются, все они записываются в журнал, и впоследствии журнал отображается для пользователя как игра за игрой.
Проблема
Я не уверен, какой шаблон проектирования лучше всего позволил бы мне выполнить вышеизложенное.Я ищу шаблон, который позволит мне увеличить сложность «борьбы» в будущем.Вероятно, добавив в бой больше объектов (больше комбатантов, возможно, новый объект среды и т. Д.)
Сначала я подумал, что шаблон Observer будет работать.У меня был бы объект боя, который представляет «наблюдаемый / субъект».Он отслеживает таймер и при увеличении таймера обновляет все объекты-участники-наблюдатели.Однако многие параметры бойцов-защитников могут влиять на действия атакующего, поэтому «наблюдатели» в этом сценарии должны знать друг друга, поэтому я не уверен, что это правильный подход.
Наконец, я не пытаюсь идеально придать дизайну рисунок.Может быть, нет «наилучшего соответствия».Я просто ищу прочную базу для дальнейшего развития.