0

2D配列を作成し、4つの「X」を対角線上に配置してXの数を検出およびカウントするための二重ループを作成しようとしましたが、「プレーヤー1勝」を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

合計ループは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 に答える
0

問題は、アラートを1回だけ表示するコードを作成する方法だと思います。ユーザーがフラグを持っているフラグを設定し、ゲームが終了したら、最後にアラートを使用する必要があります。

これでアラートがループ内にあるため、ループが発生するたびにアラートが発生します。

于 2013-03-24T16:12:17.213 に答える