2013-12-03 4 views
0

Делаю линкор игру в JavaScript, и я наткнулся на проблемуJavaScript Battleship Массив сращивания

var targetString = target.replace(/\s+/g, ''); 
    for(var i = 0; i !== inputArray.length; i++) { 
     for(var j = 0; j !== boats[i].usedPositions.length; j++) { 
      if(targetString === boats[i].usedPositions[j].toString()) { 
       hit = true; 
       boats[i].hits[j] = 1; 
       console.log(boats[i].hits); 
       currentBoat = boats[i]; 
       boats[i].usedPositions.splice(j,1); 
       break; 
      }         
     } 
    } 

if(hit && stop == false) { 
     alert ("Hit!"); 
     if(allEquals(currentBoat.hits, 1) && hit) { 
      alert("Boat with length " + currentBoat.hits.length + " has sunken!"); 
      sunkenBoat++; 
     } 
    } 

Первый кусок кода проверяет, если вводимый координат совпадает с координатой (все они хранятся в usedPositions). Чтобы не допустить, чтобы игрок снова ударил по этой лодке, я хочу взять координатор удара из этого массива, используя сплайсинг. Но когда я это делаю, он не предупреждает меня, когда лодка затонула (вторая часть кода). Когда линия со сращиванием в удалении, она дает предупреждение. Может кто-нибудь мне помочь? Полный код найден here.

ответ

0

splice перемещает последующие элементы массива вниз, чтобы заполнить пробел. Ваша логика не похожа на то, что она ожидает, что все будет двигаться так.

Вместо splice, вы, вероятно, просто хотите присвоить другое значение в этом месте массива, например .:

boats[i].usedPositions[j] = " "; // Where " " is assumed not to represent a boat 
+0

Великий, спасибо человеку! –

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