来实现游戏的胜利判断逻辑,你能帮我吗?
当你用JavaScript实现了一个Tic-tac-toe游戏后,你可以通过以下代码来添加胜利判断逻辑:
// 游戏状态
let board = [
['', '', ''],
['', '', ''],
['', '', '']
];
// 当前玩家
let currentPlayer = 'X';
// 游戏是否结束
let gameEnded = false;
// 胜利组合的数组
const winningCombinations = [
// 横向胜利组合
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
// 纵向胜利组合
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
// 对角线胜利组合
[0, 4, 8],
[2, 4, 6]
];
// 点击格子时的处理函数
function cellClicked(row, col) {
// 如果游戏已结束或当前格子已被填充,则不做任何操作
if (gameEnded || board[row][col] !== '') {
return;
}
// 更新格子状态
board[row][col] = currentPlayer;
// 在界面上显示当前玩家的标记
document.getElementById(`cell-${row}-${col}`).innerText = currentPlayer;
// 检查当前玩家是否获胜
if (checkWin(currentPlayer)) {
// 游戏结束,显示获胜信息
document.getElementById('status').innerText = `Player ${currentPlayer} wins!`;
gameEnded = true;
} else if (checkDraw()) {
// 检查是否平局
document.getElementById('status').innerText = 'It\'s a draw!';
gameEnded = true;
} else {
// 切换玩家
currentPlayer = currentPlayer === 'X' ? 'O' : 'X';
document.getElementById('status').innerText = `Player ${currentPlayer}'s turn`;
}
}
// 检查当前玩家是否获胜
function checkWin(player) {
for (let combination of winningCombinations) {
let [a, b, c] = combination;
if (board[Math.floor(a / 3)][a % 3] === player &&
board[Math.floor(b / 3)][b % 3] === player &&
board[Math.floor(c / 3)][c % 3] === player) {
return true;
}
}
return false;
}
// 检查是否平局
function checkDraw() {
for (let row = 0; row < 3; row++) {
for (let col = 0; col < 3; col++) {
if (board[row][col] === '') {
return false;
}
}
}
return true;
}
上述代码实现了一个简单的Tic-tac-toe游戏,并添加了胜利判断逻辑。在cellClicked
函数中,每当玩家点击一个格子时,会更新格子状态并检查当前玩家是否获胜或平局。checkWin
函数用于检查当前玩家是否在任意一种胜利组合中连成一线,checkDraw
函数用于检查是否平局。
你可以将上述代码添加到你的Tic-tac-toe游戏中,以实现胜利判断功能。希望对你有帮助!
领取专属 10元无门槛券
手把手带您无忧上云