深度优先搜索算法在RPG游戏迷宫中的应用
在RPG游戲中我們經常會看到一些迷宮,我之前玩仙劍一的時候就經常在幾個迷宮里繞來繞去也繞不出來,玩仙三由于游戲視角可以轉,更是費勁。這里我們使用深度優先算法達到遍歷一個迷宮的目的。
?? 首先定義一個有序元組A:{左,上,右,下}表示遍歷的順序,這個順序將用來生成搜索樹的子節點,當然順序是可以變的,如果地圖是45度角的,也可以定義非正方向,總之能表示一個順序就好。
?? 然后針對每個分叉節點,定義候選方向為B:{x|x∈A ∩x方向有路可走∩ x≠當前方向},算法每次得到按照A排序的B集合,然后從B中取第一個方向進行,一直到B=Φ。當B=Φ時回溯到上一個節點,然后得到當前節點的B集,從中選擇優先級低于當前方向的方向繼續前進.如此可以遍歷整個迷宮。
?? 本算法的問題在于迷宮必須是非成環的,像仙劍三到大渡口的迷宮就是有環的,所形成的就不是搜索樹而是搜索圖,另一個問題是如果完全執行算法最后會停在入口的位置,所以見到出口您就出吧,見好就收。
?? 舉一個例子。
?? 如上圖所示的迷宮A集合{左,上,右,下},B集合依次如下所示:
{右}
{下}
{右}
{右,下}選則右
{上}
{右}回退一個
{上}回退一個
{右,下}選擇下
{右}
{下}見好就收吧,出迷宮去嘍
?? 搜索樹如圖所示,每個子節點集合就是B
??????? 右
??????? |
??????? 下
??????? |
??????? 右
?????? /? \
????? 右?? 下
????? |??? |
????? 上?? 右
????? |??? |
????? 右?? 下
?? 當然實際的迷宮構成的搜索樹會很復雜,但是深度優先的思路還是一致的.
轉載于:https://www.cnblogs.com/sdqxcxh/archive/2010/08/13/1798995.html
總結
以上是生活随笔為你收集整理的深度优先搜索算法在RPG游戏迷宫中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黄山风景区残疾人免票吗
- 下一篇: IE6,7,8,FF兼容总结