这是Tic-Tac-Toe游戏javascript代码的一部分。这部分是在两个方向上检查对角线的胜利。对角线在X获胜时起作用,但在O获胜时不起作用。我基本上都写了同样的东西,所以我不确定我犯了什么错误。我是不是犯了语法错误?
function CheckWin_Diagonal(rowClicked, colClicked) {
if (rowClicked == colClicked) {
for (c = 0; c < rows; c++) {
if (intBoard[c][c] != X_CLASS)
break;
if (c == rows - 1) {
alert("PLAYER X WIN!!");
document.location.reload()
}
}
}
else {
if (rowClicked == colClicked) {
for (c = 0; c < rows; c++) {
if (intBoard[c][c] != CIRCLE_CLASS)
break;
if (c == rows - 1) {
alert("PLAYER O WIN!!");
}
}
}
}
}
function CheckWin_Diagonal2(rowClicked, colClicked) {
if (rowClicked + colClicked == cols - 1) {
for (r = 0; r < cols; r++) {
if (intBoard[r][(cols - 1) - r] != X_CLASS)
break;
if (r == cols - 1) {
alert("PLAYER X WIN!!");
document.location.reload()
}
}
}
else {
if (rowClicked + colClicked == cols - 1) {
for (r = 0; r < cols; r++) {
if (intBoard[r][(cols - 1) - r] != CIRCLE_CLASS)
break;
if (r == cols - 1) {
alert("PLAYER O WIN!!");
}
}
}
}
}
我根本没有看到逻辑,但您正在做:
function CheckWin_Diagonal(rowClicked, colClicked) {
if (rowClicked == colClicked) {
/** logic **/
}
else {
if (rowClicked == colClicked) {
/** logic **/
}
}
}
显然,第二个if
中的代码永远不会执行,因为它与第一个条件相同(所以永远不会执行(。
你基本上是在说:
IF SOMETHING HAPPENED DO THIS, OTHERWISE IF THE SAME THING HAPPENED DO THAT
所以THAT
永远不会发生,因为你把条件捕获在第一个IF
中,而完全相同的条件没有OTHERWISE
您的else
块运行的if
条件与最初触发else
的条件相同,保证它们永远不会运行。