【开发者说】重塑经典,如何在 HarmonyOS 手机上还
原贪吃蛇游戏
本文作者:
Kiruba Pradeep, Tech Lead, currentlybased at L&T Technology Services
本期我们为大家带来的是由印度开发者 Kiruba Pradeep 投稿的童年经典游戏,通过 JS 模
板在 HarmonyOS 手机 上 一步 步开 发呈 现, 简 单有 趣的 小游 戏 demo ,希 望给 你 的
HarmonyOS 开发之旅多一点启发。
贪吃蛇,一款经典的小游戏,勾起了多少人的童年回忆。小时候,我们在游戏中快乐玩耍,
现如今,让我们在开发中慢慢回溯吧!基于此,Kiruba Pradeep 总结了一套开发贪吃蛇游
戏的要点秘诀,并在一行行代码中重塑经典。
在游戏中,玩家须通过导航按钮控制蛇的运动,以便吃掉随机出现的食物,来获得相应积分
并增加蛇身长度,当蛇发生碰撞或反向移动时,则游戏结束。首先,让我们一起梳理一下开
发的要点:
1) 绘制固定组件:包括画布、导航按钮、得分栏等内容的绘制
2) 设计动态组件:包括蛇体与食物的形状、大小、颜色的设计
3) 动态规则:设定食物随机出现的位置,蛇的运动方式及形态
4) 运行机制:当蛇消耗食物后,增加积分和蛇的长度,并绘制新的食物
5) 违规判定:当蛇碰撞到自身或画布边缘,或者反向移动,则判定违规,提示用户“game
来源:HarmonyOS 开发者微信号 https://mp.weixin.qq.com/s/v4Qy_42bCxE4rp1uaSXsyA
over”,并自动重新开始游戏
在正式开始敲代码之前,开发者们需要先下载安装 Huawei DevEco Studio,如果对于这个
流程不甚熟悉,可以参照官网的教程操作。
· HuaweiDevEco Studio 安装指南:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/software_i
nstall-0000001053582415
请注意,本次 demo 主要针对逻辑梳理和要点讲解,限于篇幅长度不会展示完整代码,开
发者们可打开以下链接获取完整代码哦~
https://gitee.com/harmonyos-developer/kaifazheshuo
下面我们就进入项目开发环节,逐一攻破以上要点,一起探寻贪吃蛇之旅:
创建项目
打开 DevEco Studio,创建新项目(New Project),选择 Phone 设备,点击 Empty Feature
Ability (JS)模板,注意项目命名须不带中文或特殊字符(如此处的 MyPhoneGame),最
后点击 Finish。
来源:HarmonyOS 开发者微信号 https://mp.weixin.qq.com/s/v4Qy_42bCxE4rp1uaSXsyA
项目创建后,我们先了解一下目录结构:
来源:HarmonyOS 开发者微信号 https://mp.weixin.qq.com/s/v4Qy_42bCxE4rp1uaSXsyA
index.hml 文件:描述页面布局
index.css 文件:描述页面样式
index.js 文件:处理页面和用户之间的交互
app.js 文件:管理全局 JavaScript 逻辑和应用程序生命周期
来源:HarmonyOS 开发者微信号 https://mp.weixin.qq.com/s/v4Qy_42bCxE4rp1uaSXsyA
pages 目录:存储所有组件页面
java 目录:存放与项目相关的 java 文件
其中,app.js 文件、pages 目录和 java 目录内容均由 JS 模板自动提供。
1)绘制固定组件
① 绘制画布,在 index.hml 文件中,设定画布的颜色和尺寸;
index.hml
Snake Game
在 index.css 文件中,可以描述画布的呈现样式;
index.css
来源:HarmonyOS 开发者微信号 https://mp.weixin.qq.com/s/v4Qy_42bCxE4rp1uaSXsyA
.container {
flex-direction: column;
justify-content: center;
align-items: center;
background-color: #d6d8d8;
}
在 index.js 文件中,引用画布$refs.canvasref,保障画布被蛇和食物图像填充。
index.js
const canvas = this.$refs.canvasref;
this.ctx = canvas.getContext("2d");
② 绘制导航按钮,我们先在 entry/src/main/js/default/common 目录下,添加 png
格式的导航按钮图片。
来源:HarmonyOS 开发者微信号 https://mp.weixin.qq.com/s/v4Qy_42bCxE4rp1uaSXsyA
然后,在 index.hml 文件中,创建“上下左右”四个导航按钮,并将方向保存在变量
“this.direction”中;
index.hml
.
在 index.css 文件中,设置导航按钮大小、位置、边框和颜色等参数;
Index.css
.backBtnup, .backBtncenter, .backBtnleft, .backBtnright {
width: 100px;
height: 100px;
来源:HarmonyOS 开发者微信号 https://mp.weixin.qq.com/s/v4Qy_42bCxE4rp1uaSXsyA
margin-bottom: 20px;
margin-top: 20px;
border-radius: 10px;
background-color: #000000;
}
.directsecond {
flex-direction: row;
justify-content: center;
align-items: center;
}
.backBtnup {
margin-top: 80px;
}
.backBtncenter {
margin-left: 40px;
margin-right: 40px;
在 index.js 文件中,通过 if 判断,调用“this.direction”,实现导航按钮控制蛇的运动方
向。
来源:HarmonyOS 开发者微信号 https://mp.weixin.qq.com/s/v4Qy_42bCxE4rp1uaSXsyA