我正在尝试在网格中查找模式 XOOX
的对 Angular 线。我有这个功能:
function chkDiagonal(token, x,y){
if(x >= 0 && x - 2 >=0 && y >= 0){
if(token === "X"){
if(gameBoard[x][y]==="X" && gameBoard[x-1][y+1] === "O"
&& gameBoard[x-2][y-2] === "O" && gameBoard[x-3][y+3]==="X"){
return true;
}
}
}
}
}
但如果我在 board[x-3][x+3]
处已经有一个 X
,它只会返回 true
我无法计算如何使其更通用,以便它只关心对 Angular 线上是否已经有两个 O
,而不关心 X
放置在两端的顺序。有人可以建议我如何解决这个问题吗?
我正在这样测试:
var gameBoard = [
["X", "O", "X", "O", "X", "O"],
["X", "O", "X", "X", "X", "O"],
["X", "O", "O", "O", "X", "O"],
["X", "O", "X", "O", "X", "O"],
["X", "O", "X", "O", "X", "O"]
];
console.log(chkDiagonal("X",4,0));//undefined
最佳答案
有两点需要指出。
- 首先,根据您的情况,您要检查
gameBoard[x-2][y-2]
应该是gameBoard[x-2][y+2]
- 其次,您应该添加
return false
位于函数末尾,这样检查失败时将返回 false。如果您不添加 return 语句,它将不会返回任何内容,因此undefined
.
关于javascript - 检查二维数组中的对 Angular 线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36417221/