javascript对if-else语句的限制
我的代码有这个问题,如果你把4条对角线从左到右,从下到上排成一行,这并不意味着有人赢了(第四条else if语句)。它的程序是,每次你把一枚硬币放在场地上,它都会检查周围是否有3枚硬币,如果有,它会说你赢了。它工作正常,直到第四个else if语句,也就是nextTurn();不起作用(就像我在第四条else-if语句下写的一样)。而且过了一段时间(大约一半),它完全停止工作javascript对if-else语句的限制,javascript,if-statement,limit,Javascript,If Statement,Limit,我的代码有这个问题,如果你把4条对角线从左到右,从下到上排成一行,这并不意味着有人赢了(第四条else if语句)。它的程序是,每次你把一枚硬币放在场地上,它都会检查周围是否有3枚硬币,如果有,它会说你赢了。它工作正常,直到第四个else if语句,也就是nextTurn();不起作用(就像我在第四条else-if语句下写的一样)。而且过了一段时间(大约一半),它完全停止工作 function testForWin(y,x) { if ((board[y][x+1] == p &
function testForWin(y,x) {
if ((board[y][x+1] == p && board[y][x+2] == p && board[y][x+3] == p) ||
(board[y][x-1] == p && board[y][x+1] == p && board[y][x+2] == p) ||
(board[y][x-2] == p && board[y][x-1] == p && board[y][x+1] == p) ||
(board[y][x-3] == p && board[y][x-2] == p && board[y][x-1] == p)) {
win();
}
else if (board[y+1][x] == p && board[y+2][x] == p && board[y+3][x] == p) {
win();
}
else if ((board[y+1][x-1] == p && board[y+2][x-2] == p && board[y+3][x-3] == p) ||
(board[y-1][x+1] == p && board[y+1][x-1] == p && board[y+2][x-2] == p) ||
(board[y-2][x+2] == p && board[y-1][x+1] == p && board[y+1][x-1] == p) ||
(board[y-3][x+3] == p && board[y-2][x+2] == p && board[y-1][x+1] == p)) {
win();
}
else if ((board[y+1][x+1] == p && board[y+2][x+2] == p && board[y+3][x+3] == p) ||
(board[y-1][x-1] == p && board[y+1][x+1] == p && board[y+2][x+2] == p) ||
(board[y-2][x-2] == p && board[y-1][x-1] == p && board[y+1][x+1] == p) ||
(board[y-3][x-3] == p && board[y-2][x-2] == p && board[y-1][x-1] == p)) {
win();
}
nextTurn();
}
谢谢大家分享您的想法,但在花了另外两个小时之后,我自己修复了它。:) 如果这个问题肯定不是关于编码,而是关于逻辑,那么你想做的是什么,也许可以跳过所有这些。即使对
else ifs
的数量有限制,此代码也离它很远。你试过调试它吗?我对connect 4游戏不太熟悉,如果你能解释一下你到底想实现什么,我相信这会让你更容易得到帮助。也许你不应该在赢了()后调用nextTurn()。我建议做一些重构。testForWin应返回布尔值。然后这个方法做它所说的事情。然后根据返回值,可以调用win()或nextTurn。