2015-10-25 24 views
2

我正在打一場戰艦遊戲。當前的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」。

回答

1

變化: -

.attr("class", "ship"); 

到: -

.addClass("ship"); 

在全碼

function klikk(x, y) { 
    $(".cell").click(function() { 
     $(this).attr("class", "ship"); 
    }); 
} 

.attr("class", "ship");被替換的所有類(.cell)只留下.ship。所以你永遠不會找到你的.cellhasClass.ship

+0

標記了你,很好 – Seabizkit

+1

@villur爲此,你也可以刪除$(「#grid .cell [data-x =」+ x +「] [data-y =」+( y-1)+「]」)。hasClass(「ship」))例如$(「#grid [data-x =」+ x +「] [data-y =」+(y-1)+「]」)。hasClass(「ship」))那麼你不需要考慮減少元信息的類。 – Seabizkit

+0

ohmygod,謝謝你指出這個! 將嘗試明天得到這個工作,如果我得到它的工作,但我認爲這很原因:) – villur

0

我一直在盯着試圖通過你試圖實現的代碼。我覺得它很漂亮/很酷。 ;-)

我覺得你是想& &,而不是||

沒有去進一步檢查,如果邏輯是正確與& &但||似乎並沒有凝結在我身上。

嘗試使用addClassremoveClass代替的Attr(類,「SomeClass的」)因爲後者刪除任何其他類以及這可能不是意圖。