我仍然是jQuery和JavaScript的初学者,但我为这个课程作业编写了这个Tic Tac Toe游戏。游戏是有效的,除了这个我似乎无法弄清楚的错误。
问题是当所有9个方格都被填满时,它应该返回一条领带。但如果最后一个方格是获胜标记,它将返回获胜者与领带的对手。
我尝试在checkForEndOfGame函数中添加if (totalTurns === 9 && checkForWinner === false)
,但还有另一个问题。如果所有9个方格都填满了获胜者,则仅返回该获胜者。但是如果所有9个方格都没有获胜者,那么它就不会返回领带。
所以,如果我以一种方式这样做,我会得到第一个问题。如果我这样做,我得到第二个问题。我很难理解为什么以及如何解决这个问题。我附上了jsfiddle的链接。
非常感谢任何帮助。谢谢。
注意:我将图像用于' x'和' o'标记,但为了jsfiddle的目的,我只是用一串' x'替换它们。或者' o'。
获胜组合是:
var winningCombos = [
// horizontal
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
//vertical
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
//diagonal
[0, 4, 8],
[2, 4, 6]
];
我通过以下方式检查获胜者:
function checkForWinner() {
winningCombos.forEach(function (win) {
if (
board[win[0]] == currentPlayer &&
board[win[1]] == currentPlayer &&
board[win[2]] == currentPlayer
) {
alert(playerMarker[currentPlayer] + " is the winner!");
$("#restartgame").show()
$("#restartgame").click(function () {
location.reload();
});
return true;
}
return false;
});
};
完整代码可以在这里找到: