0
私は戦艦ゲームを作っています。 3つのタイルのボートを3つ並べて、重ならないようにしたい。 リコール方法の問題
var boatGrid = {
placeBoat : function() {
for (boatNum = 1; boatNum < 4; boatNum++) {
console.log("boat placed now");
this.selectPos();
document.getElementById("boattest").innerHTML = boatPos;
if (document.getElementById(boatPos).hasBoat == 1) {
this.placeBoat();
document.getElementById("boattest").innerHTML = "failed";
}
else {
this.buildBoat();
}
}
},
selectPos : function() {
xPos = Math.floor(Math.random() * 8 + 1);
yPos = Math.floor(Math.random() * 10 + 1);
boatPos = "cell_" + xPos + "_" + yPos;
},
buildBoat : function() {
for (boatLen = 1; boatLen < 4; boatLen++) {
boatPos = "cell_" + xPos + "_" + yPos;
xPos = xPos + 1;
document.getElementById(boatPos).hasBoat = 1;
document.getElementById(boatPos).style.backgroundColor = "brown";
console.log("placed one tile");
}
},
clearTable : function() {
for (y = 1; y < 11; y++) {
for (x = 1; x < 11; x++) {
boatPos = "cell_" + x + "_" + y;
document.getElementById(boatPos).hasBoat = 0;
document.getElementById(boatPos).boatHere = 0;
document.getElementById(boatPos).style.backgroundColor = "#34B0D9"
document.getElementById(boatPos).innerHTML = "<pre> </pre>";
boatGrid.hasChecked = 0;
}
}
},
}
が(変数boatPos座標記憶)を2回選択される座標、関数placeBoat()は、それ自体を呼び出すことになっている:私は、次のコードを書かれています。しかし、実際に起こっているのは、buildBoat()関数が2回呼び出されていることです。あなたの誰かが問題を見ることができますか?私は現在、placeBoat()関数が内部からリコールする必要があることに問題があると考えていますが、その回避方法はわかりません。すべての助けに感謝します。
私はそのようなオブジェクト定義の中に変数を宣言することは合法だとは思わない。あなたはそれを財産にすることを意味しましたか? – Andbdrew
@Andbdrewはい、私は少し速かったです。コードにマッチする答えを編集しました。 – falkodev
boatPosはオブジェクトの外側に定義されています。とにかく、buildBoat()関数を2回実行するのはなぜですか? –