javascript - 比较数组以确定获胜条件

标签 javascript jquery arrays scope

我正在尝试创建一个简单的井字棋游戏,但遇到了问题。我创建了一个名为 winConditions 的 2D 数组,用于与 xMoves 和 oMoves 进行比较,以确定某人何时获胜,但当我调用 certainWin 函数时,似乎没有发生任何事情。我对数组和作用域真的很糟糕,所以我假设问题出在不正确的作用域问题上,但这有点超出了我的理解范围。有人可以帮助确定这段代码的问题吗? 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;
        }
    }
};

最佳答案

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

在您的 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

关于javascript - 比较数组以确定获胜条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17005728/

相关文章:

jQuery : XMLHttp Requests : Is this use of synchronous ajax bad?

arrays - yii activerecord 返回对象

c++ - 对一组数字进行排列,然后将它们变成一个 int

php - javascript捕获并显示php变量

javascript - 如何使用正则表达式循环遍历字符串并将其分段到数组中?

javascript - Jquery datepicker,如何设置 future 日期

javascript - 计算 DIV 数量,使用 jQuery 添加包装器

jQuery 隐藏显示 id

php - 循环时仅将唯一值插入数组

javascript - 在几秒而不是几分钟后触发事件