前言
这次是深鸿会深大小组(Zzt_01-23)学习完HarmonyOS后,自行开发的第一个demo——黑白翻棋,详细讲述了黑白翻棋的编写思路,内含详细解释,同时也欢迎与各位感兴趣的读者一块儿学习HarmonyOS开发,相互交流、共同进步。javascript
概述
本个demo将从零开始完成鸿蒙小游戏APP在可穿戴设备上的编译,此处以运动手表为例,在项目中咱们所使用到的软件为DevEco Studio,下载地址为:DevEco Studio下载,在项目中咱们要实现的内容为黑白翻棋APP的开发。css
正文
建立项目文件
DevEco Studio下载成功后,点击左上角的File,点击New,再选择New Project,选择Lite Wearable选项,选择默认的模板,而后选择保存路径,将文件命名为MyGame(文件名不能出现中文或者特殊字符,不然将没法成功建立项目文件),如图所示。 java
主要编写的文件为index.css、index.hml和index.js,打开路径如图所示,index.hml用于描述页面中包含哪些组件,index.css用于描述页面中的组件都长什么样,index.js用于描述页面中的组件是如何进行交互的。canvas
实现开始界面的布局
首先咱们要先在运动手表上画出一个7*7的棋盘,色块颜色先设定为全是白色,棋盘上方显示“当前步数:0”,棋盘下方有一个“从新开始”的按钮,如图所示:数组
<div class="container" > <text class="steps"> 当前步数:{{currentSteps}} </text> <canvas class="canvas" ref="canvas" ></canvas> <input type="button" value="从新开始" class="bit" /> </div>
.container { flex-direction: column; justify-content: center; align-items: center; width:450px; height:450px; } .steps { font-size: 18px; text-align:center; width:300px; height:20px; letter-spacing:0px; margin-top:10px; } .canvas{ width:320px; height:320px; background-color: #BBADA0; } .bit{ width:150px; height:30px; background-color:#AD9D8F; font-size:24px; margin-top:10px; }
data: { currentSteps: 0, }
在文件开头定义一个全局变量量context,建立一个onReady()函数,用于定义2d绘画工具ide
var context; onReady(){ context=this.$refs.canvas.getContext('2d'); }
用0表示白色,1表明黑色,这样咱们就能定义一个用0和1表示键,颜色表示值的字典COLORS,而且定义全局常量边长SIDELEN为40,间距MARGIN为5,定义一个全局变量的二维数组grids,其中的值全为0函数
var grids=[[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]; const SIDELEN=40; const MARGIN=5; const COLORS = { "0": "#FFFFFF", "1": "#000000" }
建立drawGrids()函数,先将grids的值利用toString()函数所有转化为字符串,fillStyle表社画图的背景颜色,引用字典便可,fillRect表示画矩形的大小,其中有四个参数,第一个参数指定矩形左上角的x坐标,第二参数指定矩形左上角的y坐标,第三个参数指定矩形的高度,第四个参数指定矩形的宽度,最后建立onShow()调用drawGrids()函数便可工具
onShow(){ this.drawGrids(); }, drawGrids(){ for (let row = 0 ;row < 7 ;row++){ for (let column = 0; column < 7;column++){ let gridStr = grids[row][column].toString(); context.fillStyle = COLORS[gridStr]; let leftTopX = column * (MARGIN + SIDELEN) + MARGIN; let leftTopY = row * (MARGIN + SIDELEN) + MARGIN; context.fillRect(leftTopX, leftTopY, SIDELEN, SIDELEN); } } }
运行便可得出开始界面布局了。布局
实现题目的随机生成和色块的翻转
其次咱们要先在运动手表上随机生成一个色块被打乱的7*7的棋盘,而且点击棋盘中任一色块,其上下左右四个色块也会跟着一块儿变色(在边缘的色块则只会改变其中若干个色块的颜色),棋盘上方的当前步数则会相应依次增长,如图所示:post
文章后续内容和附件能够点击下面的原文连接前往学习
原文连接:https://harmonyos.51cto.com/posts/2002#bkwz