會員登入 新使用者?立即註冊

這是一個充滿夢想的地方!致力於創造簡單易用、媲美商業遊戲等級的玩家版3D線上遊戲創作平台!!!(研發中)

關閉
勇者們!一起創作心目中的遊戲世界吧!!! 我要留言

3D線上遊戲製作軟體 - 我的路徑搜尋程式碼分享下載

分類:程式技巧
2007/12/24 01:08

ps : 這是現在所在的地圖,紅圈編號01是起點,-2是終點


ps : 這是尋路用的虛擬地圖,流水編號就是已找到的路線。


ps : 這是最後的顯示結果。


ps : 這是改變終點位置,再尋一次路,並非總是最短路徑。


ps : 這是起點終點都改變了,也並非是最短路徑,但是都能正確找到路。


最近準備開始做3D地圖上的人物移動時,就去找出以前寫的路徑搜尋程式碼,
然後使用前稍微再測試一下看看,發現,怎麼執行結果怪怪的。。。
仔細檢查許久後,確定真的有bug啦~
原來是。。。以前曾有稍微改過,但是沒有經過仔細的測試。。。
難怪會遺留下bug。。。真是的。。。
不過,現在已經除掉嚕。。。也經過詳細的檢查了。

此路徑搜尋演算法是採用漩渦式的探測,每次尋路時都盡量向終點移動,
每移動一格,都會將移動路徑用數字依序紀錄在一個虛擬地圖內。
(此虛擬地圖可以自行設定大小,能決定尋路的遠近喔)
若是遇到死路,則開始從走過的路倒退,直到找到新路徑出現。
若是已找到的路徑超過512格,則判定為無路,不再搜尋。
若是虛擬地圖設太小而終點太遠,則判定為無路,不再搜尋。
所以將虛擬地圖設大,可以找到更遠的終點,
但是也更花搜尋時間和虛擬地圖記憶體。

若是順利找到了終點,則開始進行路線最佳化。
最佳化原理是,用路線的每一格編號來進行判斷,將編號越大的串連起來,
則有可能會是最短路線。(但不保證是)
例如現在這格編號是1,然後再開始搜尋該鄰近8格,
如果編號大於1,則先紀錄起來,直到鄰近8格都檢查過。。。
假設如果最後找到最大的編號是10,則會將路線的2~9編號格剃除,
而路線編號就會是1,10,11,12,13。。。

我這樣說明可能不清楚,大家也很難懂吧,那請多包涵了~


這裡有路徑搜尋程式碼可以下載:
我的路徑搜尋程式碼下載連結


若是有興趣的話,可以研究看看喔!
這並非是最好的路徑搜尋演算法,只能算是最容易實現的演算法。
而搜尋效能還不錯喔~
人物移動搜尋路徑時完全不會太慢。



有興趣的人可以參考看看喔~


上一篇 下一篇
回應(5)
引用(0)

統計資料

  • 今日人數:21
  • 累計人數:87105
  • 發表文章:77
  • 相片數量:111
  • 回應數量:424

勇者居民觀察室

    Blog Look Score and Rank

     

    目前在線人數:

    who's online

我的訂閱

雅虎資訊 版權所有 © 2009 Yahoo! Taiwan All Rights Reserved
「本服務設有管理員」 服務條款 隱私權政策