2009-04-09 142 views
10

我目前正在編寫一個非常基礎的Java遊戲,基於這個想法Theme Hospital尋路2D Java遊戲?

我對Java很陌生,目前正在大學讀書,第一年就讀。我已經完成了近兩年的Java開發和關閉,但我終於把時間花在了一個體面的項目上。

我正處於需要創建一個人(病人)入院的階段。他們需要前往前臺,然後是GP的辦公室,然後回到原來的位置。

我已經看過A *路徑發現,但對我來說似乎很複雜。我瞭解它的工作原理,但我不確定如何將其應用到我的遊戲中。

到目前爲止,用戶可以放置一個前臺,並建立一個GP的辦公室。其中每一個都有一個「使用點」,這將是患者必須去的地方。網格方塊只能填滿或不填充,不會有不同的地形。

我很猶豫要不要粘貼任何代碼,因爲它很混亂,因爲在過去的幾個月裏我學習了很多新的GUI技術。我的計劃是邁向里程碑1,讓病人走到辦公桌前,然後離開辦公室。一旦我有了這個,我將更多地整理代碼。

我見過很多A *和許多不同類型的實現。有人能給我一個我可以使用的起點嗎?我是否應該嘗試修改已經寫好的一組課程,或者嘗試從頭開始編寫自己的課程?

+0

查看我的帖子以獲取鏈接到A *實現。 – TofuBeer 2009-04-13 21:43:11

回答

6

您確實需要A *,它是基於網格的尋路的最佳實現。

這可能會幫助你:

http://www.cokeandcode.com/main/tutorials/path-finding/

編輯:的前述鏈接有利於既作爲一個可執行的組類和自定義路徑尋找方法,以達到您的滿意指南。

+0

啊,是的,我發現這個月前,當我第一次研究我的遊戲理念的東西。我會重新閱讀它,看看它是否有幫助。謝謝:) – Relequestual 2009-04-09 19:17:19

4

該書AI for Game Developers對A *有很好的解釋。實際上我今天要寫一個實現......如果我這樣做,我會把代碼放在這裏。

代碼已完成,放在這裏太大了,所以你可以從:https://chaos.bcit.ca/svn/public/astar/(自簽名證書,但服務器沒有做任何惡意)抓取它。

我大部分時間都是遵循本書中的僞代碼,但我所做的一切都比我迄今爲止對A *看到的任何東西都更加面向對象。

你有一個由瓦片組成的迷宮。每個瓷磚都有一個位置和一個障礙物(如果沒有障礙物,則爲null)。

您可以使用路徑查找器(如AStar)查找給定起始位置和結束位置之間的最短路徑。你會得到一個Path,其中包含你需要經歷的Tiles,從開始到結束。

可以通過提供不同的HeuristicCalculator改變啓發式計算(目前1只檢查,看看是否有障礙物或沒有和計算出瓷磚的最短數穿過去,你可以添加的權重爲不同的障礙實例如果你不喜歡默認)。

該代碼是根據LGPL的許可證,因此如果您進行更改並分發應用程序,則必須進行更改。隨意將錯誤報告/修復發送到許可證註釋中的電子郵件地址(在每個標題中找到)。

我會(從來沒有)在考試後得到評論,但我認爲它非常簡單。

+0

哇,我喜歡這樣,非常快速的迴應。 謝謝,如果你這樣做會很棒。 如果我確實使用你的實現,我當然會給你充分的信貸! – Relequestual 2009-04-09 19:16:20

+0

不用擔心(只有少數以前的學生在這裏知道我的真實姓名:-) – TofuBeer 2009-04-09 19:41:59

+1

只要你發佈一些有趣,廣泛或酷的東西,你會得到快速的迴應。在沒有多少人有經驗的領域有精確的技術問題,或者沒有詳細的書面問題,你會看到SO的安靜方面。 :) – 2009-04-09 23:26:59

2

當然,如果你編寫自己的實現,你將學到很多關於尋路的知識。但是你也會花很多時間去做。

查看一般處理圖的JGraphT庫,它有一個很好的API,並且支持最短路徑算法而不僅僅是A *。