文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

2048小游戏—鸿蒙Arkts版

2024-11-30 10:25

关注

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com

一、规则讲解

首先我们先介绍一下2048这个游戏的基本规则:一开始方格内会出现2或者4等这两个小数字,玩家只需要上下左右其中一个方向来移动出现的数字,所有的数字就会想滑动的方向靠拢,而滑出的空白方块就会随机出现一个数字,相同的数字相撞时会叠加靠拢,然后一直这样,不断的叠加最终拼凑出2048这个数字就算成功。

如图为游戏的初始界面:

2048小游戏——鸿蒙Arkts版-开源基础软件社区

二、代码讲解

1、项目结构

如图:

2048小游戏——鸿蒙Arkts版-开源基础软件社区

主要包含三个包:model、pages以及util。

2、model包

首先我们声明该类为GameController,下面为了方便理解,我将分步给出部分代码并介绍该类的主要方法和属性。

2048小游戏——鸿蒙Arkts版-开源基础软件社区

2048小游戏——鸿蒙Arkts版-开源基础软件社区

2048小游戏——鸿蒙Arkts版-开源基础软件社区

2048小游戏——鸿蒙Arkts版-开源基础软件社区

2048小游戏——鸿蒙Arkts版-开源基础软件社区

去掉数组中的0,向头或向尾压缩数组。
 0,4,0,4向左压缩变成:4,4,0,0. 向右压缩变成:0,0,4,4
相邻的数如果相同,则进行相加运算。
 4,4,0,0向左叠加变成:8,0,0,0. 向右叠加变成:0,0,0,8
 toHead表示是否是头压缩

2048小游戏——鸿蒙Arkts版-开源基础软件社区

2048小游戏——鸿蒙Arkts版-开源基础软件社区

首先我们定义了一个 GameDataSource 类,实现了 IDataSource 接口的方法。该类有一个 dataArray 属性,用于存储字符串数组类型的数据。constructor 方法接收一个参数 ele,并通过循环将其内容推入 dataArray 数组中。totalCount 方法返回 dataArray 数组的长度,即数据总数。getData 方法接收一个数字类型的参数 index,并返回 dataArray 数组中索引为 index 的元素。registerDataChangeListener 和 unregisterDataChangeListener 方法在接口中定义,但在该类中并未实现任何功能。

通过这段代码,我们实现了一个数据源类,可以用于获取、存储和管理数据。如果需要在数据源中添加数据监听器,可以通过实现 IDataSource 接口来实现该功能。

3、pages包(仅展示部分代码)

2048小游戏——鸿蒙Arkts版-开源基础软件社区

Lblbc 组件实现了游戏逻辑和界面渲染。它包含了一个 flatCellArr 数组,用于存储游戏中的数字方块的值。gameController 和 colorUtil 属性分别是游戏控制器和颜色工具类的实例。

组件中的 startGame 方法用于初始化游戏,并将 flatCellArr 数组重置为初始状态。moveUp、moveDown、moveLeft 和 moveRight 方法用于响应用户的滑动手势,移动数字方块。updateCells 方法用于更新 flatCellArr 数组的值,并检查游戏是否结束。

aboutToAppear 方法在组件即将出现时调用,并根据屏幕的大小设置游戏界面的大小。build 方法用于构建游戏界面,其中使用了 Column、Grid、Text 等 Ohos.js 组件。

GameOverView 组件是一个自定义对话框组件,用于在游戏结束时显示。它包含一个 startGame 方法和一个 build 方法,用于重新开始游戏。

4、util包

2048小游戏——鸿蒙Arkts版-开源基础软件社区

这段代码实现了一个 ColorUtil 类,提供了一个 getCellBackgroundColor 方法,用于根据数字方块的值返回相应的背景颜色。具体实现是通过一个 switch 语句,根据不同的数字方块的值返回不同的颜色值。在 switch 语句中,每个 case 语句对应一个数字方块的值,返回一个对应的颜色值。如果传入的数字方块的值不在 case 列表中,default 语句会返回一个默认的颜色值。

在游戏界面中,数字方块的背景颜色就是通过调用 ColorUtil 类的 getCellBackgroundColor 方法来获取的。根据不同的数字方块的值,游戏界面上的数字方块会显示不同的背景颜色,从而提高了游戏的可玩性和可视化效果。

结尾

我们需要在config.json中进行文件的配置用于描述应用程序的基本信息、模块、设备配置和能力等。它由三个主要部分组成:app、deviceConfig 和 module。

首先是 app 部分,用于定义应用程序的基本信息,包括 bundleName、vendor 和 version 等。其中,bundleName 表示应用程序的包名,vendor 表示应用程序的开发商,version 表示应用程序的版本号,包括 code 和 name 两个属性。

然后是 deviceConfig 部分,用于定义设备的配置信息。

最后是 module 部分,用于定义应用程序的模块和能力。其中,package 表示模块的包名,name 表示模块的入口文件,mainAbility 表示应用程序的主要入口能力。deviceType 表示设备类型,这里是手机。distro 表示应用程序的分发信息,包括 deliveryWithInstall、moduleName、moduleType 和 installationFree 等属性。abilities 表示应用程序的能力列表。js 表示应用程序的 JS 配置信息,包括 mode、pages、name 和 window 等属性。其中,mode 表示页面的模式,这里是 ets。pages 表示应用程序的页面列表,这里只有一个名为 pages/index 的页面。name 表示页面的名称,这里是 .MainAbility。window 表示页面的窗口配置,包括 designWidth 和 autoDesignWidth 等属性。

最终的运行结果如图所示:

2048小游戏——鸿蒙Arkts版-开源基础软件社区

好啦,本期的讲解就此结束,博主第一次写这玩意,希望大家一起努力共同进步。

文章相关附件可以点击下面的原文链接前往下载:

https://ost.51cto.com/resource/2901

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com

来源:51CTO 开源基础软件社区内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯