站長資訊網
最全最豐富的資訊網站

canvas實現五子棋游戲的代碼示例

本篇文章給大家帶來的內容是關于canvas實現五子棋游戲的代碼示例,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

效果

canvas實現五子棋游戲的代碼示例

代碼

<!DOCTYPE html> <html lang="zh_CN"> <head>     <meta charset="UTF-8">     <title>五子棋</title>     <script src="https://code.jquery.com/jquery-3.3.1.js"></script> </head> <body> <canvas id="canvas" width="400" height="400"></canvas> <script>     (function () {    // 畫布繪制         let canvas = document.getElementById("canvas");         let context = canvas.getContext("2d");         context.beginPath();         for (let i = 0; i < 19; i++) {             // 豎線繪制             context.moveTo(10 + i * 20, 10);             context.lineTo(10 + i * 20, 370);             // 橫線繪制             context.moveTo(10, 10 + i * 20);             context.lineTo(370, 10 + i * 20);         }         context.stroke();     })();     // 鼠標單擊     let blorwh = 0;     // 定義用于判斷落子的二維數組     let matrix = new Array(19);     // 進行賦值     for(let i = 0; i < 19; i++){         matrix[i] = new Array(19);         for(let j = 0; j < 19; j++){             matrix[i][j] = 0;         }     }     $("#canvas").click((event) => {         // 每次落子的時候取反         blorwh = !blorwh;         console.log(event.offsetX);         let canvas = document.getElementById("canvas");         let context = canvas.getContext("2d");         // 保存要落子的坐標         let arcPosX, arcPosY;         // 保存棋子在數組中的位置         let mtxPosX, mtxPosY;         // 和每一條線進行比較,如果相差10個像素以內,即,靠近         for(let x = 0; x < 19; x++){             if(Math.abs(event.offsetX - (10 + x * 20)) < 10){                 // 獲得需要騾子的x                 arcPosX = 10 + x * 20;                 mtxPosX = x;             }             if(Math.abs(event.offsetY - (10 + x * 20)) < 10){                 // 獲得需要的y                 arcPosY = 10 + x * 20;                 mtxPosY = x;             }         }         // 畫出棋子         // 落子為空,進行繪制,反之不繪制         if(matrix[mtxPosX][mtxPosY] == 0) {             context.beginPath();             if (blorwh) {                 context.fillStyle = "white";                 context.arc(arcPosX, arcPosY, 10, 0, Math.PI * 2, false);                 context.stroke();                 // 白子為1                 matrix[mtxPosX][mtxPosY] = 1;             } else {                 context.fillStyle = "black";                 context.arc(arcPosX, arcPosY, 10, 0, Math.PI * 2, false);                 // 黑子為2                 matrix[mtxPosX][mtxPosY] = 2;             }             context.fill();         }         // 獲勝檢測         if(matrix[mtxPosX - 1][mtxPosY] == matrix[mtxPosX][mtxPosY] &&             matrix[mtxPosX - 2][mtxPosY] == matrix[mtxPosX][mtxPosY]  &&                 matrix[mtxPosX -3][mtxPosY] == matrix[mtxPosX][mtxPosY]  &&                     matrix[mtxPosY - 4][mtxPosY] == matrix[mtxPosX][mtxPosY]){             if(matrix[mtxPosX][mtxPosY] == 1){                 alert("白方獲勝");             }else{                 alert("黑方獲勝");             }         }     }) </script> </body> </html>

思路

創建數組用于保存五子棋的位置即可。
輸贏判斷使用遍歷即可
重復落棋用判斷保存的數組的位置是否已經有棋子即可
落在交叉線和附近的點判斷,如果相差小于一定數值進行落棋。

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
亚洲国产91精品无码专区| 国产69精品久久久久999三级| 久久久久国产精品免费免费不卡| 亚洲精品岛国片在线观看| 亚洲日韩国产精品乱-久| 国产精品区一区二区三| 日韩在线视精品在亚洲| 精品国产天堂综合一区在线| 亚洲中文字幕久久精品无码VA| 国产成人亚洲合集青青草原精品| 91精品福利一区二区三区野战| 少妇人妻无码精品视频app| 亚洲精品福利视频| 日韩精品人妻系列无码专区| 日韩精品无码专区免费播放| 99这里只有精品66视频| 99精品热线在线观看免费视频| 日韩精品亚洲人成在线观看| 99久久人妻精品免费一区| 99精品在线视频| 热re99久久6国产精品免费| 日韩精品无码熟人妻视频 | 精品少妇人妻AV免费久久洗澡| 久久久久无码精品国产app| 亚洲精品国产摄像头| 国产精品亚洲专区无码牛牛| 精品丰满人妻无套内射| 日韩精品高清自在线| 国产在线国偷精品产拍| 日韩有码一区二区| 日韩免费精品视频| 日韩中文无码有码免费视频| 福利姬在线精品观看| 国产乱人伦偷精品视频免观看| 久久精品女人天堂AV麻| 国语自产偷拍精品视频偷拍| 国产精品亚洲一区二区三区在线 | 亚洲国产精品ⅴa在线观看| 国产成人久久精品77777综合| 精品无码久久久久久久久| 日韩蜜芽精品视频在线观看|