JavaScript Battleship Array拼接

时间:2013-12-03 17:28:31

标签: javascript arrays 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中)。为了防止玩家再次击中该船,我想使用拼接从该阵列中取出击中的坐标。但是当我这样做时,它不会在船沉没时提醒我(第二段代码)。当删除带有拼接的行时,它会发出警报。谁能帮我?找到完整代码here

1 个答案:

答案 0 :(得分:0)

splice向下移动后续数组元素以填充空格。你的逻辑看起来并不像是期望事情那样移动。

而不是splice,您可能只想为该数组位置分配一些其他值,例如:

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