我正在打一場戰艦遊戲。當前的genShips函數應該檢查是否已經標記了帶有座標x:y的div及其邊界。如果他們被標記,然後嘗試新的x和y,如果他們沒有標記,又沒有附近的船舶,然後將船放置在x:y,x + 1:y上。船總是1x2和水平。角落可以觸摸,但雙方不能。jQuery hasClass沒有工作或有缺陷,如果陳述
繼承人上http://jsfiddle.net/u43703ms/1/
完整的代碼,只是函數本身。
function genShips() {
var gridLength = $("#option").val();
while (true) {
var y = Math.floor(((Math.random() * gridLength)));
var x = Math.floor(((Math.random() * gridLength)));
var x2 = x + 1;
$("#info").html(x + ":" + y);
if
(
$("#grid .cell[data-x="+x+"][data-y="+y+"]").hasClass("ship")
|| ($("#grid .cell[data-x="+x+"][data-y="+(y-1)+"]").hasClass("ship"))
|| ($("#grid .cell[data-x="+x+"][data-y="+(y+1)+"]").hasClass("ship"))
|| ($("#grid .cell[data-x="+(x-1)+"][data-y="+y+"]").hasClass("ship"))
|| ($("#grid .cell[data-x="+(x+1)+"][data-y="+y+"]").hasClass("ship"))
|| ($("#grid .cell[data-x="+(x2-1)+"][data-y="+y+"]").hasClass("ship"))
|| ($("#grid .cell[data-x="+x2+"][data-y="+(y+1)+"]").hasClass("ship"))
|| ($("#grid .cell[data-x="+x2+"][data-y="+(y-1)+"]").hasClass("ship"))
|| ($("#grid .cell[data-x="+(x2+1)+"][data-y="+y+"]").hasClass("ship"))
)
{
console.log("dont print ship");
}
else {
console.log("print ship");
$("#grid .cell[data-x="+x+"][data-y="+y+"]").attr("class", "ship");
$("#grid .cell[data-x="+x2+"][data-y="+y+"]").attr("class", "ship");
break;
}
}
}
生成給你想要的gridsize(從下拉菜單中選擇),並genShips試圖把船舶上的網格。現在它只是因爲某些原因沒有在div上看到「ship」類,或者我的if語句有缺陷。
爲了更好地解釋我的if語句,它基本上控制了是否在x,y,上,下,左,右,上和右下方爲x2,第二個箱子上的「ship」。
標記了你,很好 – Seabizkit
@villur爲此,你也可以刪除$(「#grid .cell [data-x =」+ x +「] [data-y =」+( y-1)+「]」)。hasClass(「ship」))例如$(「#grid [data-x =」+ x +「] [data-y =」+(y-1)+「]」)。hasClass(「ship」))那麼你不需要考慮減少元信息的類。 – Seabizkit
ohmygod,謝謝你指出這個! 將嘗試明天得到這個工作,如果我得到它的工作,但我認爲這很原因:) – villur