Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript对if-else语句的限制_Javascript_If Statement_Limit - Fatal编程技术网

javascript对if-else语句的限制

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 &

我的代码有这个问题,如果你把4条对角线从左到右,从下到上排成一行,这并不意味着有人赢了(第四条else if语句)。它的程序是,每次你把一枚硬币放在场地上,它都会检查周围是否有3枚硬币,如果有,它会说你赢了。它工作正常,直到第四个else if语句,也就是nextTurn();不起作用(就像我在第四条else-if语句下写的一样)。而且过了一段时间(大约一半),它完全停止工作

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。