赞
踩
本文是在上一篇(2048未完成版)的基础上完成的,由我和@WiKiBeta共同对代码进行了完整的实现,并对完整的过程和代码都进行了完备的整理和详细的解读,由于没有张荣超老师的教程,代码的解读可能会出现差错(应该不会有),以下是我们完成后写下的笔记,如果有纰漏,希望各位谅解并指出。
本次课程目标是开发能在鸿蒙设备上运行的经典小游戏2048,本次学习实现的功能主要有:1.实现页面布局 2.在画布上显示所有的格子以及格子里的数字 3. 页面初始化时随机选择两个格子,并放入2或4。本次课程中,未完整实现的响应滑动事件功能将在以后的学习笔记中进行补充。(课程使用的开发软件为DevEco Studio, 语言为JS).
接下来我们继续完成剩下的部分:
4.响应滑动事件(主要包括以下两小步)
1)将grids中不为零的元素存到array[]中
2)按照演示方向,将array[]中相邻且相同的数合并(注意合并的优先级),并将合并后得到的数加到scores中
5.判断游戏是否结束
1)判断方格已满
2)判断是否能合并
3)如果游戏结束,界面进行的响应:格字背景色褪色+弹出"游戏结束"
华为HarmonyOS的应用开发工具DevEco Studio下载地址
node.js下载地址
效果如下
效果如下
随机选择两个格子,并放入2或4:``
效果如下:
1)将grids中不为零的元素存到array[]中
2)按照演示方向,将array[]中相邻且相同的数合并(注意合并的优先级),并更新分数(将合并后得到的数加到scores中)
(插入个图片方便理解):
该步骤对应代码如下:
changeGrids(direction) { let newGrids = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]; if (direction == 'left' || direction == 'right') { let step = 1; if (direction == 'right') { step = -1; } for (let row = 0; row < 4; row++) { let array = []; let column = 0; if (direction == 'right') { column = 3; } for (let i = 0; i < 4; i++) { if (grids[row][column] != 0) { array.push(grids[row][column]); } column += step; } for (let i = 0; i < array.length - 1; i++) { if (array[i] == array[i + 1]) { array[i] += array[i + 1]; this.updateCurrentScores(array[i]); array[i + 1] = 0; i++; } } column = 0; if (direction == 'right') { column = 3; } for (const elem of array) { if (elem != 0) { newGrids[row][column] = elem; column += step; } } } } else if (direction == 'up' || direction == 'down') { let step = 1; if (direction == 'down') { step = -1; } for (let column = 0; column < 4; column++) { let array = []; let row = 0; if (direction == 'down') { row = 3; } for (let i = 0; i < 4; i++) { if (grids[row][column] != 0) { array.push(grids[row][column]); } row += step; } for (let i = 0; i < array.length - 1; i++) { if (array[i] == array[i + 1]) { array[i] += array[i + 1]; this.updateCurrentScores(array[i]); array[i + 1] = 0; i++; } } row = 0; if (direction == 'down'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。