Tic Tac Toe游戏中的Tie功能问题

时间:2015-10-22 21:35:30

标签: javascript jquery

我仍然是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;
    });
};

完整代码可以在这里找到:

https://jsfiddle.net/p0rL9jmd/

0 个答案:

没有答案