遊戲演算法實踐 A星尋路

2021-09-19 10:04:36 字數 840 閱讀 4529

先展示效果圖:

如圖中亮綠色點為起點,藍點為終點,白色為牆體不可行走。黃色點區域為被試探到的位置,綠色的路徑為最後的最短路徑。其中這裡移動規則是只能上下左右移動。

+ 建立乙個open集合,乙個close集合

+ 把起點加入close集合,並把它設為current節點

+ 重複如下過程:

+ 查詢current節點的相鄰節點(上下左右)

+ 如果節點不是牆也不在close集合並且也不在open集合的,計算g值h值,設定parent為current節點,然後加入到open集合

+ 如果已經加入了open集合,那麼查詢一下是不是從current節點到這個節點g值更小,如果是那麼改變這個節點的g值為更小值,parent指標指向current節點

+ 如果節點是終點,那麼跳出迴圈

+ 遍歷open集合,查詢f值最小的節點(f=g+h)

+ 如果找到了,把這個節點移到close集合

+ 如果沒有找到,並且open表又為空了,那麼表示找不到路徑了,跳出迴圈

+ 迴圈後如果沒找不到路徑,那麼結束

+ 如果找到路徑,那麼從終點開始,在close表中通過parent指標來尋找路徑,直到起點

大家可以通過github來參考具體**。

工程實現了編輯地圖,儲存地圖(為下次開啟使用)功能。工程使用cocos2d-x3.x引擎。

迷宮尋路(A星尋路演算法)

題目 假設我們有乙個7 5大小的迷宮,如下圖所示,綠色格仔表示起點,紅色的格仔表示終點,中間的3個深灰色格仔表示障礙物。請找到一條從起點到終點最短的路徑。解題思路 需要引入兩個集合和乙個公式,如下 具體步驟 把起點放入openlist 檢查openlist中是否有值,如果沒有則無法到達終點,結束尋路...

A星尋路演算法介紹

你是否在做一款遊戲的時候想創造一些怪獸或者遊戲主角,讓它們移動到特定的位置,避開牆壁和障礙物呢?如果是的話,請看這篇教程,我們會展示如何使用a星尋路演算法來實現它!在網上已經有很多篇關於a星尋路演算法的文章,但是大部分都是提供給已經了解基本原理的高階開發者的。本篇教程將從最基本的原理講起。我們會一步...

android遊戲尋路演算法

遊戲開發區很多朋友都在談論a 尋路演算法,大家都感到高深莫測,而不敢涉足尋路演算法.希望下面的分析能為大家解開這個誤區.a 演算法確實是最高效 最流行的尋路演算法,是搜尋演算法最深層的延伸.a 演算法是由4個要素組成 a 估價函式 並查集 堆 廣搜.想要寫a 演算法,我們必須門心自問對這4個方面的基...