2013-02-15 67 views
1

我正在製作一個迷宮遊戲,並且我正在爲迷宮佈局使用一張桌子。角色完美地移動,但它穿過牆壁對於牆壁,我使用的東西類似<td style="border-right:10px solid #000000;">。它的作品,但角色幾乎是一個鬼。有沒有辦法讓字符在達到border時停下來?我的迷宮在http://thomaswd.com/maze在迷宮牆上停止字符javascript

謝謝!

+1

請張貼相關的代碼在這裏。 – bfavaretto 2013-02-15 19:36:09

+0

你是什麼意思? – 2013-02-15 19:38:05

+0

在jsfiddle中複製問題 – 2013-02-15 19:38:49

回答

1

由於您使用的是jQuery,並且單元格上的類顯示了牆,您可以使用jQuery的hasClass方法檢查您嘗試移入的單元​​格是否有牆。

function up() { 
    //check if the cell has a border on the bottom 
    if ($("#td" + (algernon - 8)).hasClass('b')) return; 
    $("td").css("background","transparent"); 
    algernon -= 8; 
    setTimeout("refresh()", 0); 
} 

function down() { 
    //check if the cell has a border on the top 
    if ($("#td" + (algernon + 8)).hasClass('t')) return; 
    $("td").css("background","transparent"); 
    algernon += 8; 
    setTimeout("refresh()", 0); 
} 

function leftclick() { 
    //check if the cell has a border on the right 
    if ($("#td" + (algernon - 1)).hasClass('r')) return; 
    $("td").css("background","transparent"); 
    algernon -= 1; 
    setTimeout("refresh()", 0); 
} 

function rightclick() { 
    //check if the cell has a border on the left 
    if ($("#td" + (algernon + 1)).hasClass('l')) return; 
    $("td").css("background","transparent"); 
    algernon += 1; 
    setTimeout("refresh()", 0); 
} 

我希望這有助於

+0

謝謝! – 2013-02-15 19:57:46

+0

我試了一下,它適用於'up()'和'left click()',但不適用於其他版本 – 2013-02-15 20:03:15

+0

有趣...我的課程是否正確?我現在在工作,所以我不能自己測試,但如果你可以等待兩個小時,我會在它上面.. – jonhopkins 2013-02-15 20:07:25

1

保存鼠標所在的單元格,然後當請求移動時,檢查當前單元格是否在用戶嘗試去的方向上具有邊界,或者未來單元格在相反方向上具有邊界,如果有請移除移動請求。例如,如果用戶點擊右側,請檢查當前單元格是否有右邊框,或鼠標移動的單元格是否有左邊框。