2013-03-24 1 views
0

Я попытался создать 2D-массив и поместить четыре «X» в диагонали и создал двойной цикл для обнаружения и подсчета числа X, но вместо отображения только одного «игрока 1 выиграл», он отображает 10 из них.Проверка диагонали 2D-массива на «X»

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");  
     } 
    } 
} 
+0

В чем вопрос? –

+0

добавить инструкцию 'break' после -' alert («игрок 1 выиграл»); '. – ShuklaSannidhya

ответ

0

Я предполагаю, что вопрос заключается в том, как заставить код показывать предупреждение только один раз - вы должны установить флаг для whi ch пользователь имеет один, и когда игра закончилась, затем используйте оповещение в конце.

Теперь предупреждение находится в цикле, поэтому он будет запускаться каждый раз, когда цикл выполняет.

0

Ваш полный цикл выполняется 42 раза (6x7). По-видимому, на 32-й итерации sumX достигает значения 4. Следовательно, все 10 раз после этого выполняется alert.

0

Как только вы обнаруживаете победителя, вы не останавливаете свою петлю.

Вы можете попробовать один из этих вариантов:

  1. Добавить условие для обоего чек for цикла, чтобы увидеть, если у вас уже есть sumX == 4

  2. return из функции после оповещения

Смежные вопросы