[英]JavaScript Battleship Array splice
我正在用JavaScript制作戰艦游戲,卻偶然發現一個問題
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中)。 為了防止玩家再次擊中該船,我想使用拼接將擊中的coordiante從該陣列中取出。 但是,當我這樣做時,它不會在船下沉時提醒我(第二段代碼)。 刪除帶有接頭的線時,它會發出警報。 誰能幫我? 完整的代碼可以在這里找到。
splice
將隨后的數組元素向下移動以填充空間。 您的邏輯看起來並不像預期的那樣。
除了splice
,您可能只想向該數組位置分配其他值,例如:
boats[i].usedPositions[j] = " "; // Where " " is assumed not to represent a boat
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.