二维数组对角线检查“x”

2D array diagonal checking for "X"

本文关键字:检查 对角线 二维数组      更新时间:2023-09-26

我尝试创建一个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");      
        }
    }
}

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

现在警报在循环中,所以它将在每次循环执行时被触发

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

一旦你发现一个赢家,你就不会停止你的循环。

你可以试试这些选项之一:

  1. 为你的for循环检查添加一个条件,看看你是否已经得到了sumX == 4

  2. return from function after alert