站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        canvas實(shí)現(xiàn)五子棋游戲的代碼示例

        本篇文章給大家?guī)淼膬?nèi)容是關(guān)于canvas實(shí)現(xiàn)五子棋游戲的代碼示例,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。

        效果

        canvas實(shí)現(xiàn)五子棋游戲的代碼示例

        代碼

        <!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();     })();     // 鼠標(biāo)單擊     let blorwh = 0;     // 定義用于判斷落子的二維數(shù)組     let matrix = new Array(19);     // 進(jìn)行賦值     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) => {         // 每次落子的時(shí)候取反         blorwh = !blorwh;         console.log(event.offsetX);         let canvas = document.getElementById("canvas");         let context = canvas.getContext("2d");         // 保存要落子的坐標(biāo)         let arcPosX, arcPosY;         // 保存棋子在數(shù)組中的位置         let mtxPosX, mtxPosY;         // 和每一條線進(jìn)行比較,如果相差10個(gè)像素以內(nèi),即,靠近         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;             }         }         // 畫出棋子         // 落子為空,進(jìn)行繪制,反之不繪制         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>

        思路

        創(chuàng)建數(shù)組用于保存五子棋的位置即可。
        輸贏判斷使用遍歷即可
        重復(fù)落棋用判斷保存的數(shù)組的位置是否已經(jīng)有棋子即可
        落在交叉線和附近的點(diǎn)判斷,如果相差小于一定數(shù)值進(jìn)行落棋。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 日本精品久久久久中文字幕| 亚洲精品一二区| 久久91精品久久91综合| 中文字幕无码精品亚洲资源网久久 | 99精品在线观看| 亚洲精品国产精品乱码不卡√| 国产精品爱搞视频网站| 999久久久无码国产精品| 亚洲精品国产精品乱码在线观看 | 久久精品免费大片国产大片| 日韩麻豆国产精品欧美| 99爱在线精品免费观看| 久久精品国产第一区二区三区| 亚洲精品无码日韩国产不卡?V| 99久久人人爽亚洲精品美女| 精品在线免费观看| 97人妻无码一区二区精品免费| 久久精品欧美日韩精品| 亚洲AV第一页国产精品| 日韩精品欧美国产在线| 久久精品一区二区三区中文字幕 | 国产精品国产AV片国产| 中文字幕精品视频| 视频二区国产精品职场同事| 国产精品久久久久久一区二区三区 | 亚洲国产成人精品无码久久久久久综合 | 精品人妻少妇嫩草AV无码专区| 国产成人精品久久综合| 亚洲综合国产精品| 国产99精品一区二区三区免费| 四虎永久在线精品884aa下载| 亚洲国产精品久久66| 亚洲国产精品免费视频| 91精品日韩人妻无码久久不卡| 亚洲国产精品线在线观看| 2023国产精品自拍| 国产精品爽爽ⅴa在线观看| 国产精品福利区一区二区三区四区| 国产精品九九久久免费视频 | 伊人久久精品线影院| 91久久精品视频|