《设计模式与游戏完美开发》-策略模式(Strategy)恶棍笔记

本文探讨了策略模式在游戏开发中的应用,特别是在处理复杂的公式计算和角色属性时的作用。通过实例说明策略模式如何帮助简化游戏中的角色和怪物的攻击、防御等计算方法,以及与状态模式的区别。

策略模式

看到这里,觉得策略模式是我见过最有用的啦。
我们遇到很多很复杂的东西,就用策略模式来处理。
有哪些复杂的东西呢!
比如公式计算。不同的职业的魔法抗性不同,有些技能扣血的方式也不一样。要如何做到简单的分离各种不同的计算方法,让玩家去挑选一个组的。

就像游戏中的例子是考虑到了人物 和 怪物,虽然同为character,但计算时候有如下分别:

  1. 敌人会有机会暴击增加额外攻击力。
  2. 玩家可以通过兵营来升高自己的生命力。

策略模式就是,建立敌人和玩家各自的策略。策略继承策略类。
策略父类有着一些会被调用的计算方法,而敌人策略子类就需要实现这个方法。
为了使得数值是正确的,所以敌人策略子类也需要知道这个保存着各类初始化数值的类,我们叫它属性类。

(突然疑问:这个类是一开始告知它还是后来每次计算是传入?这关系到是否只需要创建一个策略类。)

属性类也有父类。属性类被Icharacter所拥有。属性类父类规定了一些每个character都通用的值。
属性类的子类一开始规定了一些数值。
属性类也有方法,方便统一不同的策略类接口

当然,属性子类一开始也可以只规定一些声明。
然后在属性子类调用策略类时,策略类可以自己去更新这些数值的初始值!

最后,在Icharacter中,在正常的流程顺序中,比如attack
就有SetWeaponAtkPlusValue(m_Attribute.GetAtkPlusValues());
WeaponAttackTarget(Target);
其中的m_Attribute.GetAtkPlusValues()就引用了属性类中的对应函数,而这个函数的会返回:
return m_AttrStrategy.GetAtkPlusValue(this);
this传进去,是方便它来计算。

结束。

策略模式与状态模式

策略和状态看似相似:

  1. 策略是Icharacter知道着attr类。状态是Icharacter知道着state类。

但不同在于:

  1. 状态的state类可以通过调用icharacter类,将icharacter的state改成别人。而策略就定死了的,不能转移。
  2. 策略类的扩展只需要重新定义属性类(有一个新怪物)或者新的策略类~就可以搭配出新的方式。不像是state模式,每次加一个模式都需要考虑到和其他模式之间的关系。

课后习题

  1. 载具这个积累时间。也可以。嗯,把有着积累时间的类给策略类去计算即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值