点击上方<font color=blue>亿元程序员</font>+关注和<font color=orange>★</font>星标
引言
大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。
本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。
优雅的代码,需要策略
大家好,今天我想和大家分享一下游戏开发中常用的设计模式之一——策略模式。策略模式是一种行为型设计模式,它通过定义一系列算法,将它们封装起来,并使它们可以相互替换,从而使算法的变化独立于使用算法的客户端。在游戏开发中,策略模式可以帮助我们实现更灵活、可维护的代码。
本文源码和源工程在文末获取,小伙伴们自行前往。
什么是策略模式?
首先,让我们来了解一下策略模式的基本概念。策略模式包含三个主要角色:
- 环境(Context):持有一个策略类的引用,提供接口给客户端使用。
- 抽象策略(Strategy):定义了一组算法,为所有具体策略类所共享。
- 具体策略(ConcreteStrategy):实现抽象策略中的算法,提供具体的业务逻辑。
一起来使用策略模式
接下来,让我们看一个简单的例子来说明策略模式的应用。假设我们正在开发一个角色扮演游戏,玩家可以通过选择不同的技能来进行攻击。我们可以使用策略模式来实现这个功能。
首先,我们定义一个策略类Skill
,它有一个方法attack()
用于执行技能。然后,我们创建两个具体策略类skill0
和skill1
,分别实现紫色攻击和粉色攻击的逻辑。最后,我们在环境类Charater
中使用这些策略。
1.准备资源
我们还是从82年祖传的资源里面找到一个紫色的技能攻击特效。但是一个技能可能不够演示策略模式。
但是对于一个PS大神来说(不是),二话不说我们打开熟悉PS,并且把紫色技能拖进去。
然后通过ctrl+u
调整色相到87并点击确定,神奇的一幕出现了,技能变成了粉色。
最后通过文件-存储为-修改技能名字-保存生成新的粉色技能。
这样我们就得到一个粉色新技能(???)
2.环境
首先定义我们的环境类Charater
,其中包含attack
和learnSkill
接口,先在构造函数里面添加一个FrameAnim
帧动画组件,关于帧动画组件的实现与使用可以阅读《CocosCreator帧动画组件FrameAnim实现与使用》。
3.抽象策略
然后定义一个抽象策略类Skill
,包含attack
接口,同时在构造函数中添加一个FrameAnim
组件。
4.具体策略
最后实现2个具体的策略类,分别是Skill0
和Skill1
,唯一的区别就是加载不同的技能效果,正是我们准备的紫色技能和粉色技能资源。
5.测试代码
创建一个主角,同时实例化2个具体的技能。
监听键盘事件,q
、w
、e
分别执行空手攻击、装备Skill0
后攻击和装备Skill1
后攻击。
6.结果演示
在上面的例子中,我们通过将技能抽象成策略类,使得玩家可以自由选择不同的技能进行攻击。如果以后需要添加更多的技能,只需要创建一个新的具体策略类即可,而不需要修改其他代码。这样,我们的代码就变得更加灵活、可维护了。
结语
在哪里可以看到如此清晰的思路,快跟上我的节奏!关注我,和我一起了解游戏行业最新动态,学习游戏开发技巧。
本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。
我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。
AD:笔者线上的小游戏《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。
实不相瞒,想要个赞和在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!
推荐专栏:
关注我,发送"策略模式"获取源码和源工程。
点击下方<font color=green>绿色按钮</font>+关注
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。