2014-12-07 56 views
2

我想要適應這個蛇遊戲:http://jsfiddle.net/unsign3d/uq6YL/有一個「滾動網格」的意義上,蛇可以從網格的任何一邊行走,並會出現在另一邊。這種蛇遊戲的例子可以在這裏找到:http://codeincomplete.com/projects/snakes/。我相信解決方案是一個簡單的解決方案,但不幸的是它在概念和語法上都不在我的掌握之中。沒有界限的蛇遊戲

這是檢測碰撞代碼:

function check_collision(x, y, array) { 
    //This function will check if the provided x/y coordinates exist 
    //in an array of cells or not 
    for (var i = 0; i < array.length; i++) { 
     if (array[i].x == x && array[i].y == y) return true; 
    } 
    return false; 
} 

任何幫助,將不勝感激。

+0

我認爲使用這裏的循環緩衝區可能是有用的,但我不知道如何實現。 – user2444319 2014-12-07 18:42:40

回答

0

我覺得這個代碼部分檢查蛇命中了邊界與否。他會保存一些磚塊,其中x,y應該沒有達到(如果命中「遊戲結束」)。在每個層間,運行蛇的線將更新其位置。新的頭寸將以x & y的形式傳遞。如果它在邊界單元格(數組)中的任何位置,函數將返回true,意味着它碰到了boudary。其他明智的假

0

讓我們考慮一下。在遊戲的原始版本中,如果蛇從棋盤上移開,遊戲就結束了。我們如何實現這一點?由於我們正在使用矩形網格,因此我們知道板的邊緣座標。如果蛇的頭部超出這些範圍,則遊戲結束。

Simple snake board

在上面的例子中,蛇不能前往(-50,-50),因爲這不是在基板上的有效位置。所以隨着蛇的移動,我們需要檢查下一個'x'和'y'位置是否有效。如果'x'低於0或高於100,或者如果'y'低於0或高於200,蛇就不能在那裏移動。在遊戲的常規版本中,遊戲將結束。

一旦你得到這個工作,你可以通過幾個改變來實現環繞式的樣式邊界。首先,您需要確定邊界的座標並將其繪製在板上。現在,您將擁有新的「禁區」座標。但是,當蛇超越界限時,不需要結束遊戲,只需要改變蛇的'x'或'y'座標。

Wrap-around snake board

例如,假設蛇行進到右側。當他碰到邊界時,他的'x'位置將在95.當發生這種情況時,我們會將其更改爲5以使其出現在屏幕的左側。同樣,如果蛇向上行進並碰到邊界,他的'y'位置將是5.爲了使他出現在屏幕的底部,我們只需要將該位置改變爲195.