前言
這次是深鴻會深大小組(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