145 Star 1.4K Fork 1.7K

OpenHarmony/applications_app_samples

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

游戏2048

介绍

本示例使用Grid组件,实现了2048小游戏功能。

需要系统存储信息,运用了用户首选项接口ohos.data.preferences ,

屏幕属性接口@ohos.display

效果预览

首页 游戏中 游戏结束

使用说明

1.每次可以选择上下左右其中一个方向去滑动,每滑动一次,所有的数字方块都会往滑动的方向靠拢外,系统也会在空白的地方随机出现一个数字方块, 相同数字的方块在靠拢、相撞时会相加。

2.当所有数字方块都无法有效滑动时,游戏结束。

工程目录

entry/src/main/ets/
|---muck
|   |---GameData.ets                        //  mock游戏数据
|---pages
|   |---index.ets                           // 首页
|---model                                  
|   |---GameRule.ets                        // 2048游戏的规则逻辑
|   |---GameModuel.ets                      // 游戏模型定义
|---resources/base                          // 存放游戏资源
|   |---element                             
|   |---media                               

具体实现

  • 界面编写步骤
    1、使用Grid编写网格界面,并在下方编写start按钮触发gameStart()函数生成gridItem所需数据,并且将游戏状态修改为游戏中,触发游戏规则Init()初始化游戏规则。
    2、循环渲染gridItem,去生成网格数据,MyGridItem会根据每一个数据渲染每一个网格的数字颜色(<=4?黑:白)和背景色(通过自然对数计算出颜色数组中的当前索引)。
    3、grid通过gesture()去绑定一组手势up,down,left,right函数, 源码参考
  • 游戏规则编写
    1、init()函数初始化游戏规则,将所有网格数字设置为0,游戏状态为开始,分数为0,并生成网格数字。源码参考
    2、触发up/down函数,网格沿着colnum移动,最多可移动三次(row大小-1次),如果当前网格数字===要移动到的网格上的数字,就将要移动的网格数字 + 当前网格数字,将结果加上旧score赋值给最新的score, 如果移动前的总数字不等于移动后的总数字,生成空白网格数字,源码参考
    3、触发left/right函数,网格沿着row移动,最多可移动三次(column大小-1次),如果当前网格数字===要移动到的网格上的数字,就将要移动的网格数字 + 当前网格数字,将结果加上旧score赋值给最新的score, 如果移动前的总数字不等于移动后的总数字,生成空白网格数字,源码参考

相关权限

不涉及。

依赖

不涉及。

约束与限制

1.本示例仅支持在标准系统上运行。

2.本示例需要使用DevEco Studio 3.1 Beta2 (Build Version: 3.1.0.400 , built on April 7, 2023)及以上版本才可编译运行。

3.本示例已适配API version 9版本SDK,版本号:3.2.11.9。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/Solutions/Game/Game2048/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/openharmony/applications_app_samples.git
git@gitee.com:openharmony/applications_app_samples.git
openharmony
applications_app_samples
applications_app_samples
master

搜索帮助