0

我正在尝试创建一个简单的井字游戏,但遇到了问题。我创建了一个名为 winConditions 的 2D 数组,用于与 xMoves 和 oMoves 进行比较以确定某人何时获胜,但是当我调用我的 determineWin 函数时似乎没有发生任何事情。我对数组和范围真的很不好,所以我假设问题出在不正确的范围问题上,但这有点超出我的想象。有人可以帮助确定此代码的问题吗? http://jsfiddle.net/Skww6/1/ (这是我可能有错误的功能)

var determineWin = function (pMoves) {
    var winAlert;
    for (var i = 0; i < winConditions.length; i++) {
        if (winConditions[i].length > pMoves.length) {
            continue;
        }
    for (var j = 0; j < winConditions[i].length; j++) {
        winAlert = false;
        for (var k = 0; k < pMoves.length; k++) {
            if (pMoves[k] === winConditions[i][j]) {
                winAlert = true;
                break;
            }

        }
        if (!winAlert) break;
    }
        if (winAlert) {
            alert(currentPlayer + "wins!");
            break;
        }
    }
};
4

1 回答 1

2

您忘记引用数组中的项目。

在您的jsFiddle中,

改变:

var winConditions = [[c1, c2, c3], [c4, c5, c6], [c7, c8, c9], [c1,c4, c7], [c2, c5, c8], [c3, c6, c9], [c1, c5, c9], [c3, c5, c7]];

至:

var winConditions = [['c1', 'c2', 'c3'], ['c4', 'c5', 'c6'], ['c7', 'c8', 'c9'], ['c1','c4', 'c7'], ['c2', 'c5', 'c8'], ['c3', 'c6', 'c9'], ['c1', 'c5', 'c9'], ['c3', 'c5', 'c7']];

您上面的代码应该可以正常工作。

Live Demo

于 2013-06-09T02:19:04.287 回答