二维阵列对角线检查“X”

时间:2013-03-24 16:08:13

标签: javascript for-loop

我尝试创建一个2D数组,并在对角线上放置四个“X”并创建一个双循环来检测和计算X的数量,但不是只显示一个“玩家1赢”,而是显示其中的10个。

var creatematrix = function (nbRang, nbColumn) {
    var result = Array(nbRang);
    for (var i=0; i<nbRang; i++) {
        result[i] = Array(nbColumn);
    }
    return result;
};

var m = creatematrix(6, 7);

m[4][1] = "X";
m[3][2] = "X";
m[2][3] = "X";
m[1][4] = "X";



var sumX = 0;
for(var k = 5; k >= 0  ; k--){
    for(var i = 0 ; i<= 6; i++){
        if(m[k][i]== "X" ){
            sumX += 1;
        }
        else if(sumX == 4){
            alert("player 1 won");      
        }
    }
}

3 个答案:

答案 0 :(得分:0)

您的总循环执行42次(6x7)。显然,在第32次迭代中,sumX达到值4.因此,在此之后的所有10次,alert都会被执行。

答案 1 :(得分:0)

一旦你发现了胜利者,你就不会停止你的循环。

您可以尝试以下选项之一:

  1. for循环检查添加条件,看看您是否已经sumX == 4

  2. 来自警报后的功能
  3. return

答案 2 :(得分:0)

我假设问题是如何让代码只显示警报一次 - 你应该设置一个标志,用户有一个标志,当游戏结束时,最后使用警报。

现在警报在循环中,因此每次循环都会触发警报。