设计模式在游戏中的应用--策略模式(二)

来源:互联网 发布:杭州baidu seo 编辑:程序博客网 时间:2024/04/29 21:22

自己接触MMORPG游戏的服务器也有段时间了,自己也从中学习了许多。Dota是我比较熟悉和喜欢的游戏,Dota里面的技能种类确实很繁多。Dota里面的技能伤害区域有很多,火女可以打出圆形的的伤害,向前冲的伤害,沙王可以打出以自己为中心的伤害。

如果是我们设计游戏的话,如何来完成这些需求呢?

圆形区域伤害,矩形区域伤害,单个物体伤害等等可以理解为不同的算法。

策略模式:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

略模式相对于简单工厂模式的特点主要是相互替换,例如我们一个技能施法的时候选择自己身边的一个物体,然后在这个物体的产生爆炸效果。

我们仔细分析这个需求就可以发现,其实在这一个技能释放的过程中,顺序地使用了2种选择目标的方式,这种替换的操作不适合简单工厂这种模式,因为简单工厂和工厂对象之间只是简单的关联关系,而策略模式的上下文和策略接口之间的关系是聚合的关系。

下图是简单工厂模式:


下图是简单策略模式:



策略模式在使用过程中由于策略模式对应的算法的个数是一定的,例如一个游戏能够提供几种伤害形式是一定的,所以可以设计成单例模式的,同时在策略模式的过程中一般也使用函数指针来根据传入的不同是参数调用不同的算法。

实现一个功能的方式多种多样,如何增加扩展性等是需要思考的!


0 0
原创粉丝点击