《千鸟中原》鸿蒙ArkTS版2048小游戏
游戏介绍
玩法介绍
首先,游戏开始会有一个初始的界面,一共十六个方格,会随机出现两个不大于4的数字填充在方格内。然后,玩家通过上下左右四个方向进行滑动,同时,方格内的数字也会随着玩家的操作进行滑动,当滑动过程中,相同的数字相遇的时候,数字会进行合并,形成一个新的数字,该数字的值为合成之前两个数字的和,而滑动的时候,空白的方块会随机出现一个不大于场上最大数字的数字,然后一直重复上下左右的操作,不断地叠加,最终拼凑出2048这个数字才算成功。
游戏界面展示
游戏界面
游戏结束页面
内容介绍
结构介绍
结构介绍
三个包的功能
model包:
该包包含应用程序中使用的数据模型,例如说,网络请求返回的数据模型,本地存储的数据模型
pages包:
该包包含应用程序中所有的UI组件,这些组件被组织成不同的模块,每个模块都包含了一组相关的UI组件。例如一个包含登录,注册等页面的模块可以被命名为auth
util包:
该包包含了应用程序中常用的工具类和辅助函数。例如,日期时间格式化、网络连接状态检查、字符串处理等。这些工具类和辅助函数可以减少代码的冗余,提高代码的可读性和可维护性。
详细内容介绍
model包
model包里面包含两个文件,分别是GameController和GameDataSource。
对于GameController文件,里面定义了具体的方法,实现对应的操作功能,展示部分内容如下图
找到可以用于生成新数字的单元格,并生成新的数字进行填充
判断是否可以移动
对数字进行叠加
对于GameDataSource,首先定义了一个 GameDataSource 类,实现了 IDataSource 接口的方法。该类有一个 dataArray 属性,用于存储字符串数组类型的数据。constructor 方法接收一个参数 ele,并通过循环将其内容推入 dataArray 数组中。totalCount 方法返回 dataArray 数组的长度,即数据总数。getData 方法接收一个数字类型的参数 index,并返回 dataArray 数组中索引为 index 的元素。registerDataChangeListener 和 unregisterDataChangeListener 方法在接口中定义,但在该类中并未实现任何功能。
通过这段代码,我们实现了一个数据源类,可以用于获取、存储和管理数据。如果需要在数据源中添加数据监听器,可以通过实现 IDataSource 接口来实现该功能
pages包
Lblbc 组件实现了游戏逻辑和界面渲染。它包含了一个 flatCellArr 数组,用于存储游戏中的数字方块的值。gameController 和 colorUtil 属性分别是游戏控制器和颜色工具类的实例。
组件中的 startGame 方法用于初始化游戏,并将 flatCellArr 数组重置为初始状态。moveUp、moveDown、moveLeft 和 moveRight 方法用于响应用户的滑动手势,移动数字方块。updateCells 方法用于更新 flatCellArr 数组的值,并检查游戏是否结束。
aboutToAppear 方法在组件即将出现时调用,并根据屏幕的大小设置游戏界面的大小。build 方法用于构建游戏界面,其中使用了 Column、Grid、Text 等 Ohos.js 组件。
GameOverView 组件是一个自定义对话框组件,用于在游戏结束时显示。它包含一个 startGame 方法和一个 build 方法,用于重新开始游戏。
util包
表示颜色的工具类
这段代码实现了一个 ColorUtil 类,提供了一个 getCellBackgroundColor 方法,用于根据数字方块的值返回相应的背景颜色。具体实现是通过一个 switch 语句,根据不同的数字方块的值返回不同的颜色值。在 switch 语句中,每个 case 语句对应一个数字方块的值,返回一个对应的颜色值。如果传入的数字方块的值不在 case 列表中,default 语句会返回一个默认的颜色值。在游戏界面中,数字方块的背景颜色就是通过调用 ColorUtil 类的 getCellBackgroundColor 方法来获取的。根据不同的数字方块的值,游戏界面上的数字方块会显示不同的背景颜色,从而提高了游戏的可玩性和可视化效果。
总结
2048小游戏是一个很有普遍性的东西,完成这个小游戏的开发,编写,还是最后的成果展示,对于新学者来说,是一个进步,但是对于整个编程世界来说,2048小游戏 已经很成熟的项目,并没有任何的实用价值,所以,只能是作为学完ArkTS之后,一个小小的检测,做完之后,和其他博主的代码展示其实都差不多,原创还是不是原创都不咋重要,学完之后,做一个2048小游戏,足够对这阶段的自己进行一个测试,结束了,下次再进步。
最后,展示一下,程序运行成功之后的截图,表示这次2048的圆满结束。
成果展示