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

2023-10-25 10:20

本文主要是介绍通过怪物展示Demo理解游戏设计模式中的迭代器模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方亿元程序员+关注和星标

请往下看

引言

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

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

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

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

什么是迭代器模式?

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

迭代器模式的优点

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

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

在游戏中运用迭代器模式

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

1.怪物

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

先拔头筹

2.怪物迭代器

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

翻山越岭如履平地

3.使用迭代器

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

手敲不易且看且珍惜

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

一键三连

4.资源准备

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

传家之宝

5.结果演示

怪物走T台

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

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

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

结语

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

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

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

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

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

推荐专栏:

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

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

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

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

点击下方绿色按钮+关注

这篇关于通过怪物展示Demo理解游戏设计模式中的迭代器模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/281916

相关文章

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

深入理解go中interface机制

《深入理解go中interface机制》本文主要介绍了深入理解go中interface机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前言interface使用类型判断总结前言go的interface是一组method的集合,不

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操