【发布时间】:2010-10-17 15:15:45
【问题描述】:
我最初在programmers.stackexchange.com 上询问this question,因为我认为对于stackoverflow 来说答案过于主观。但是,在 cmets Muad'Dib 中指出了这一点:
这可能更适合 StackOverflow ... 这是一个直接与编程问题相关的问题,并讨论编程解决方案。一种解决方案可能与另一种解决方案相同,其中它们之间的选择是主观的,但对整体问题本身的讨论并不是因为某些解决方案显然不适用。所以这个问题确实有一个或几个好的答案,而诸如“哪个是最好的文本编辑器?”之类的问题。没有……
所以,在考虑了更多情况之后(并查看了一些似乎不适合的模式),这是我的困境:
设置
我正在设计一个简单的战斗策略游戏。
- 两个战斗人员在一定时间内互相攻击。
- 获胜者是时间结束后最健康的人。
- 在战斗中玩家没有直接干预。玩家在战斗前为他们的战斗人员定义了一些策略,而“AI”(宽松的术语)决定了战斗人员会做什么。
- 战斗由一个“滴答”秒的任意计时器组成,战斗人员的攻击速度(除其他外)决定了他们做某事的频率。
- 除了战斗对象之外,还有一个“天气”对象可以对战斗人员的能力产生一些随机的环境影响。
- 整个过程每秒钟循环一次,确定并执行环境影响和攻击,并全部记录下来,然后将日志作为逐个播放显示给用户。
问题
我不确定哪种设计模式最能帮助我完成上述任务。我正在寻找一种模式,可以让我增加“战斗”的复杂性。可能是通过在战斗中添加更多对象(更多的战斗人员,可能是一个新的环境对象等)
起初我认为观察者模式会起作用。我会有一个代表“观察者/主题”的战斗对象。它跟踪一个计时器,随着计时器的增加,它会更新所有参与者观察者对象。但是,很多防御方战斗人员的参数会影响攻击方战斗人员的行动,因此该场景中的“观察者”需要相互了解,因此我不确定这是否正确。
最后,我并不是要完美地确定设计模式。也许没有“最合适的”。我只是在寻找一个坚实的基础。
【问题讨论】:
-
不确定您是否只使用一个 DP 来管理游戏。 DP 可能会帮助您解决在编写代码时出现的一些问题。例如,我可以看到#3“定义一些策略”将与策略模式一起使用;)
-
是的,战斗对象将使用策略模式和状态模式的组合。我感兴趣的是战斗的整体“管理”。
标签: design-patterns language-agnostic