javascript中的一个小语法问题-Tic-Tac-Toe



这是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的条件相同,保证它们永远不会运行。

相关内容

最新更新