【发布时间】:2012-09-01 21:53:17
【问题描述】:
这是this question 的后续行动。上下文是相同的,因此略读可能会有用。几天来我一直在集思广益,但一无所获,所以我放弃并来到这里。
我想知道在创建像我在那里描述的那样的系统时,哪些设计模式会发挥作用。假设我有一个战斗算法,每边可以有任意数量的战斗人员。首先我们找出谁攻击谁,然后执行。
棘手的部分是可以添加许多额外的行为,而且它们可能有些随意。把它们想象成“被动技能”。也可能有一些行为,例如在击中目标时获得统计数据,但仅限于某些类型的战斗。
我之前的问题显示了装饰器是如何失败的。一个答案建议使用策略模式,但我并不急于编写十几种不同类型的策略,然后为每种策略编写几个具体的类。即使那样,如果我需要一种完全不同于我已有的行为的全新行为,我仍然必须违反开放封闭原则。在某些情况下,我需要一次组合多个策略,这可能导致修饰策略或复合策略。例如,当您受到伤害时,您可能 1. 拥有将伤害减半的能力,2. 装备可以进一步减少伤害的物品,3. 向攻击者返还一些伤害,以及 4. 获得一些统计点数.
那么,一位经验丰富的建筑师会在这里做什么呢?很多游戏都实现了这些系统,所以我很好奇哪种模式或模式组合在这里运作良好。
我不想发布一大堆代码,所以如果我的系统有任何特定部分您想查看,请在评论中提问。
【问题讨论】:
标签: php design-patterns game-engine