我正在尝试创建一个简单的井字棋游戏,但遇到了问题。我创建了一个名为 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']];
上面的代码应该可以正常工作。
关于javascript - 比较数组以确定获胜条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17005728/