2012-03-17 66 views
3

(起初,對不起我的弱英語)在java中尋找2D遊戲的路徑

有一個類似於Linux中的「啃」遊戲的蛇遊戲。

一些的遊戲功能!:

-the板處於60 * 60字段中,由壁包圍,並有一些壁在板太。

-there是4個程序員必須寫一個程序可以找到他們的移動方法四種蛇。(對於一個蛇每個程序)

- 時間,以決定下一步的行動是0.1秒,所以我們必須找到它在0.1秒之前,否則,蛇會走向前一個方向。

蛇的頭不得撞到牆壁或其他蛇。

-Snake不能向後移動(它的犯規並且具有負點)

...............

牆壁的coordiation被給予了我們在遊戲中(x,y)。 其他蛇類的cooardiation是被賦予了我們在遊戲

的每個週期(0.1秒)................

現在的問題是:如何找到最佳舉措?

你能幫我通過建議任何算法或...?

謝謝。

你可以看到遊戲在這裏的截圖:

Snake Game

+0

A *路徑發現? – alex 2012-03-17 11:23:32

+0

BFS路徑查找? – 2012-03-17 11:26:16

+0

@alex我不認爲經典的A *適合這裏,因爲有「移動障礙」[多重蛇] - 據我所知,無法預測。 – amit 2012-03-17 11:27:09

回答

2

大多數人都將建議是這樣的A *尋路算法,這是很好的記錄在網絡上,我建議你去並搜索任何這些建議。你需要做的是修改這些算法,使它們在你給出的約束條件下很好地工作。 (建議A *並忽略0.1秒的限制不是很有幫助)。

有,我認爲你應該考慮

  • 當你正在尋找一個路徑,你不僅要考慮的其他蛇類和牆壁上的障礙物的幾個點,而且其潛在的下一步行動。你不希望蛇頭在下一步碰撞。這可能需要跟蹤他們的頭。

  • 您應該將您的路徑搜索範圍限制在一定的深度級別,以便您不會耗盡時間。如果您使用A *算法,您應該發現啓發式元素會導致大多數路徑將您帶向您想要前往的點的方向。所以,如果你越來越近,下一次搜索可能會更容易。

  • 點選擇並不是那麼簡單。例如,你不應該只選擇最近的點,因爲你正在比賽其他蛇。你應該嘗試選擇你知道或認爲你可以先到的點。你可以簡單地測量蛇和所有點之間的距離。考慮到對方的蛇正在試圖去尋找最接近他們的點,並且看看你是否能夠因爲你更接近而擊敗他們。挑選點你認爲你可以贏。

  • 考慮到自己的障礙阻止任何向後移動。

+0

可以給我一個java * java的算法實現嗎? 或別的,可以幫助我! – 2012-03-18 11:18:54