很好的簡單的迷宮,你基本上沿着一條路徑「走」,直到你到達十字路口。那時你記錄下你的所有選項。然後你選擇一個(使用你喜歡的任何啓發式方法,因爲你的右手技巧,你總是會「向右」)。一旦你記錄了這些選項,你就可以將它們放入堆棧。然後你繼續前進。
當你讀完一個死衚衕時,你要麼「回頭」,要麼只要彈出堆棧,選擇另一個選項並從那裏繼續。要走回頭路,你只需記錄堆棧中的每一步,然後開始解開堆棧,直到達到最後一個路口。
你可以簡單地繼續這樣做,注意怪物,例如你可以通過的東西,或者你錯過了一件物品,作爲「死衚衕」。然後,您可以在交叉口記錄這些可通過的死角,以便如果您回到交叉路口仍然在尋找出口,您可以檢查庫存中的「鑰匙」或「劍」或任何需要通過的鑰匙。當你回來時,檢查未開發路徑的選項,以及被可能失敗的東西阻塞的路徑。如果你有能擊敗怪物的物品,你可以重新找回那條路線,擊敗怪物並繼續。
我不記得這種技術是否適用於有周期的迷宮。它應該,因爲你應該始終能夠告訴你以前是否訪問過某個地點,在你身後留下一條「麪包屑」或者記錄你所看到的地點。
它當然不會告訴你最佳路徑或最佳得分路徑,只要你在它上面碰到它,它就會讓你到達出口。
當您發現交叉點時,您還可以將內部地牢表示爲內存中的連通圖,圖中的每個節點都是交集,並且每個節點之間的路徑長度(步數)爲圖中的轉換。您也可以將此圖中的障礙物表示爲節點。
所以,如果你遇到一個吸血鬼,這將是與在走廊的盡頭沒有出口的一個節點。之後,當你得到十字架和木樁時,你就會「知道」吸血鬼在哪裏,並且能夠將圖形回溯到吸血鬼(當然,假設它不移動)。
訣竅是真正建立這個圖,你去和使用股票圖的遍歷算法(其中有許多,而且他們並不難)導航從一個節點到另一個節點。
但遍歷一個簡單的迷宮,堆技術工作得很好。
附錄:
對於簡單的迷宮,單個堆疊應該是足夠的。我不知道你的地圖是如何佈局或如何定位它,等
但是你可以做的是每次移動時,只需將堆棧上的舉動。然後,當您想要回溯時,您會開始彈出堆棧並沿着相反的方向行進,直到您返回到十字路口,然後從那裏開始。
這簡直是一個「深度優先」搜索一棵樹,你不知道的還佈置的。但同樣重要的是,您還要以其他方式跟蹤您在哪裏。例如,如果您將迷宮表示爲大量地板和牆塊,則可以捕獲您在簡單列表中輸入的每個地板塊的座標。
這樣做的原因是,這樣如果在迷宮週期,你不想上,你已經走在空格「向前走」。顯然你需要這樣做時,回溯。但是當探索時,你需要知道你有沒有看到。你如何跟蹤這取決於你的地圖的數據結構。
考慮這個簡單的迷宮:
# ########
# ########
# # # #
# # #### #
# #a b#
# # #### #
# # #
##### ####
# c #
# ########
你可以看到,你只需要在位置A,B和C推到堆棧中。如果你能以紀念樓你去過的地方,你的地圖看起來像這樣在第一個十字路口:
#.########
#.########
#.# # #
#.# #### #
#.#a b#
#.#.#### #
#. .# #
##### ####
# c #
# ########
而且你堆看起來像:
{d,d,d,d,d,d,d,l,u}
對於7個起伏,一個離開,一個離開。
如果你不能標記地圖,你可以跟蹤座標。這完全取決於。
只是一個快速警告:右手規則不會總是解決這樣的迷宮。例如,如果你需要找到迷宮中間的東西,並且有一個島(中心島周圍的連續走廊),那麼你將永遠不會使用這個規則到達中心。 – nycdan