0

我尝试创建一个二维数组并在对角线上放置四个“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");      
        }
    }
}
4

3 回答 3

0

我认为问题是如何使代码只显示一次警报-您应该设置一个用户拥有一个标志以及游戏结束时的标志,然后最后使用警报。

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

于 2013-03-24T16:12:17.213 回答
0

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

于 2013-03-24T16:11:03.523 回答
0

一旦检测到获胜者,您就不会停止循环。

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

  1. 在两个循环检查中添加一个条件,for看看你是否已经有了sumX == 4

  2. return从警报后的功能

于 2013-03-24T16:11:31.493 回答