// canvas画图是异步的,保证画出来再去检测输赢 setTimeout(() => { if (isWin(cheeksX, cheeksY)) { const con = confirm(`${isBlack ? '黑棋' : '白棋'}赢了!是否重新开局?`) // 重新开局 ctx.clearRect(0, 0, 600, 600) con && play() } // 切换黑白 isBlack = !isBlack }, 0) } // 判断是否五连子 functionisWin(x, y) { const flag = isBlack ? 1 : 2 // 上和下 if (up_down(x, y, flag)) { returntrue }
// 左和右 if (left_right(x, y, flag)) { returntrue } // 左上和右下 if (lu_rd(x, y, flag)) { returntrue }
// 右上和左下 if (ru_ld(x, y, flag)) { returntrue }
returnfalse }
functionup_down(x, y, flag) { let num = 1 // 向上找 for (let i = 1; i < 5; i++) { let tempY = y - i console.log(x, tempY) if (tempY < 0 || cheeks[tempY][x] !== flag) break if (cheeks[tempY][x] === flag) num += 1 } // 向下找 for (let i = 1; i < 5; i++) { let tempY = y + i console.log(x, tempY) if (tempY > 14 || cheeks[tempY][x] !== flag) break if (cheeks[tempY][x] === flag) num += 1 } return num >= 5 }
functionleft_right(x, y, flag) { let num = 1 // 向左找 for (let i = 1; i < 5; i++) { let tempX = x - i if (tempX < 0 || cheeks[y][tempX] !== flag) break