esto es parte del código en javascript para un juego de Tic Tac Toe. esta parte está comprobando la victoria de la diagonal en ambas direcciones. Las diagonales funcionan en la victoria de X pero no funcionan en la victoria de O. Básicamente escribí lo mismo, así que no estoy seguro de cuál es el error que cometí. ¿Cometí algún error sintáctico?
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!!"); } } } } }No he visto la lógica en absoluto, pero estás haciendo:
function CheckWin_Diagonal(rowClicked, colClicked) { if (rowClicked == colClicked) { /** logic **/ } else { if (rowClicked == colClicked) { /** logic **/ } } } Obviamente, el código en el segundo nunca se ejecutará porque está en la misma condición que el primero (por lo if nunca llegará allí).
Básicamente estás diciendo:
IF SOMETHING HAPPENED DO THIS, OTHERWISE IF THE SAME THING HAPPENED DO THAT
Entonces THAT nunca sucederá, porque atrapaste la condición en el primer IF y no hay OTHERWISE para exactamente la misma condición.
Sus bloques else ejecutan la misma condición if que activó el else en primer lugar, lo que garantiza que nunca se ejecutarán.