我正在使用 MVC 模式在Java中创建基于回合制的2D多人游戏(无AI)棋盘游戏,其中有很多规则和条件,我无法弄清楚实现它们的良好模式,例如:
根据所选的游戏模式,所有这些规则可能会有所不同,这也可能会改变获胜条件和一些游戏策略。
哪种模式可能适用于此?特别是不同角色可以拥有不同的行为,这也取决于游戏的游戏模式和状态。
我知道关于游戏模式的问题已经有很多问题,但我找不到合适的东西。
答案 0 :(得分:2)
如果我必须设计这个游戏,我会尝试识别隐藏在问题陈述中的不同对象,如下所示:
玩家可以从12个池中选择一个角色
嗯。所以我需要Player
和Character
课程。
他们之间有相似之处,但每个角色都可以移动 不同的是,可以使用不同的项目
确定。因此,每个Character
都有一些共同的行为,但字符也可能具有与常见行为不同的其他行为。让我们为Character中的每个行为添加Character中的方法。
但是那种仅适用于特定类型角色的行为呢?好的,所以我绝对需要一种在运行时为我的角色添加行为的方法。
Hmmmm。让我们创建一个名为interface
的{{1}},其中包含一个名为.. umm ..的方法。让我们创建几个实现此接口的类并实现behaviorve方法。
到目前为止一切顺利。我们有一个Behavior
类,可用于实例化12个字符中的一个。我们有一个Character
层次结构,用于在角色之间不常见的其他行为。我们现在需要使这两个类一起工作,以便我们可以在运行时添加行为。在我的整个职业生涯中,我被告知有利于作文而不是继承。所以我想我会通过在Behavior
中添加have-a
引用来制作字符Behavior
Behavior
。这个模式有一个名称..这是Character
模式。
上述解释中最重要的一点是,你没有看问题并说Strategy
。相反,您想出了一个关于您的设计将会是什么样子的初稿并说出what design pattern can I apply?
我在这个答案中没有涉及很多要求。这个答案的想法是向您解释您可以提出的思维过程,以便提出您的设计初稿并不断进化,而不是在开始时过度设计。
答案 1 :(得分:0)
看看ECS(实体组件系统)架构模式和DDD方法。 DDD专为具有复杂域逻辑的应用程序而创建,游戏通常具有它。
一些有用的链接: http://en.wikipedia.org/wiki/Entity_component_system http://en.wikipedia.org/wiki/Domain-driven_design
要完全理解DDD,您必须阅读Eric Evans的书,名为Domain Driven Design。