通过怪物展示Demo理解游戏设计模式中的迭代器模式

LogicAetherMaster
• 阅读 89

点击上方<font color=blue>亿元程序员</font>+关注和<font color=orange>★</font>星标

通过怪物展示Demo理解游戏设计模式中的迭代器模式

引言

大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。

本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。

今天我们要来聊一聊游戏开发中的一个重要设计模式——迭代器模式。相信很多开发者在开发过程中都会遇到需要遍历数据结构的情况,而迭代器模式就是一种非常优雅的解决方案。那么,什么是迭代器模式?它又有什么优点呢?接下来就让我们一起来揭开迭代器模式的神秘面纱吧!

本文源码和源工程在文末获取,小伙伴们自行前往。

什么是迭代器模式?

迭代器模式是一种设计模式,它定义了一个迭代器接口,该接口包含两个方法:hasNext()next()。迭代器接口的实现类负责遍历数据结构返回下一个元素。当没有更多元素时,hasNext() 方法应返回 false,而 next() 方法应抛出一个异常。

迭代器模式的优点

那么,为什么我们需要使用迭代器模式呢?这里有几个主要原因

  1. 代码解耦:迭代器模式将数据结构和遍历逻辑分离,使得我们可以在不改变数据结构的情况下,轻松地添加、删除或修改元素。这大大提高了代码的可维护性和可扩展性
  2. 提高代码复用性:通过使用迭代器模式,我们可以将遍历逻辑封装在一个独立的类中,从而实现代码的复用。这对于游戏开发中的多个场景(如角色列表、物品栏等)来说,可以大大减少重复代码。
  3. 增强代码可读性:迭代器模式使得代码更加简洁、清晰,易于阅读和理解。这对于团队合作和代码审查来说,是非常有帮助的。

在游戏中运用迭代器模式

下面我们一起来做一个怪物展示Demo,通过它去理解迭代器模式。

1.怪物

首先,我们需要创建一个怪物类,用于存储怪物的信息,包括怪物名字和怪物图片路径

通过怪物展示Demo理解游戏设计模式中的迭代器模式

2.怪物迭代器

接下来,我们创建一个怪物迭代器类,用于遍历怪物列表,该接口包含两个方法:hasNext()next()

通过怪物展示Demo理解游戏设计模式中的迭代器模式

3.使用迭代器

然后,我们创建一个怪物列表,并使用迭代器模式来遍历怪物列表,并给怪物添加上一篇文章手敲的FrameAnim帧动画组件。

通过怪物展示Demo理解游戏设计模式中的迭代器模式

通过space按键去遍历怪物并且切换怪物。

通过怪物展示Demo理解游戏设计模式中的迭代器模式

4.资源准备

老样子拿出82年的典藏资源(好东西)。

通过怪物展示Demo理解游戏设计模式中的迭代器模式

5.结果演示

通过怪物展示Demo理解游戏设计模式中的迭代器模式

在这个示例中,我们使用了一个简单的数组来存储怪物信息,并使用迭代器模式来遍历这个数组。

当然,在实际的游戏开发中,你可能需要使用更复杂的数据结构来存储怪物信息,但基本的迭代器模式的思路是相同的。

通过使用迭代器模式,我们可以更加灵活地处理游戏中的各种数据结构,提高代码的可读性和可维护性

结语

在哪里可以看到如此清晰的思路,快跟上我的节奏!关注我,和我一起了解游戏行业最新动态,学习游戏开发技巧。

本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。

我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。

AD:笔者线上的小游戏《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。

实不相瞒,想要个在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!

推荐专栏:

8年主程手把手打造Cocos独立游戏开发框架

从零开始开发贪吃蛇小游戏到上线系列

游戏开发的技巧、心得、资讯

关注我,发送"迭代器模式"获取源码和源工程。

点击下方<font color=green>绿色按钮</font>+关注

点赞
收藏
评论区
推荐文章
Stella981 Stella981
4年前
ASMSupport教程4.7 生成关系运算符
<p在java中,关系运算符是很常用的,分别是&gt;,,&lt;,&gt;,&lt;,!这六种,我们按照惯例看看我们需要生成的代码:</p<divid"scid:9D7513F9C04C4721824A2B34F0212519:dfec0f1ca2ec4ebabc9b91c161fbfa47"class"wlWri
Stella981 Stella981
4年前
SpringBoot 2.0 系列002
SpringBoot2.0系列002运行流程分析SpringBoot2.0系列001入门介绍以及相关概念(https://my.oschina.net/lt0314/blog/1810336)1\.SpringBoot运行的几种方式
Wesley13 Wesley13
4年前
4,MongoDB 之 $关键字 及 $修改器 $set $inc $push $pull $pop MongoDB
MongoDB中的关键字有很多,$lt$gt$lte$gte等等,这么多我们也不方便记,这里我们说说几个比较常见的一.查询中常见的等于大于小于大于等于小于等于等于:在MongoDB中什么字段等于什么值其实就是":"来搞定比如"name":"路飞学城"!(https://oscimg.oschin
Stella981 Stella981
4年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
Wesley13 Wesley13
4年前
BAT 鼎立格局被打破,2019 年这些互联网公司是程序员跳槽首选!
点击上方“程序员江湖”,选择“置顶或者星标”你关注的就是我关心的!!(https://oscimg.oschina.net/oscnet/3a919fd0b2b4441ea3f05371910126dd.jpg)作者:BOSS直聘来源:BOSS直聘作者:BOSS直聘(ID:bosszhipin),领
Wesley13 Wesley13
4年前
MongoDB 范围查询
查询价格在2009000  $gt 大于   $lt  小于//查询价格2009000范围的数据db.prodgory.find({"price":{$gt:"200",$lt:"9000"}})查询给定范围数据  $in//给定范围查询db.product1.find({"categor
小万哥 小万哥
1年前
资源描述框架的用途及实际应用解析
RDF(资源描述框架)是一种用于机器理解网络资源的框架,使用XML编写。它通过URI标识资源,用属性描述资源,便于计算机应用程序处理信息。RDF在语义网上促进信息的确切含义和自动处理,使得网络信息可被整合。RDF语句由资源、属性和属性值组成。RDF文档包括&lt;rdf:RDF&gt;根元素和&lt;rdf:Description&gt;元素,后者用about属性标识资源。RDF还支持容器(如&lt;Bag&gt;、&lt;Seq&gt;和&lt;Alt&gt;)来描述集合。RDFS是RDF的扩展,提供描述类和属性的框架,而达布林核心是一组预定义属性,用于描述文档。
小万哥 小万哥
1年前
RSS 解析:全球内容分发的利器及使用技巧
RSS(ReallySimpleSyndication)是一种XML格式,用于网站内容的聚合和分发,让用户能快速浏览和跟踪更新。RSS文档结构包括&lt;channel&gt;和&lt;item&gt;元素,允许内容创作者分享标题、链接和描述。通过RSS,用户可以定制新闻源,过滤不相关信息,提高效率。RSS支持不同版本,如RSS0.91和RSS2.0,其中RSS2.0语法简单且广泛使用。RSS提高网站流量,适用于新闻、博客、日历等频繁更新的站点。RSS的历史始于1997年,至今仍无官方标准,但已成为内容共享的重要工具。
关于EPOLL触发的事件说明
POLLIN接收缓冲区可读,对端断开及tcp连接也属于可读。LT模式下:接收缓冲区可读就会触发;ET模式:状态改变了,比如接收缓冲区从空不空,才会触发一次读。
LogicAetherMaster
LogicAetherMaster
Lv1
乡梦不曾休,惹甚闲愁?忠州过了又涪州
文章
5
粉丝
0
获赞
0