日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cocos2d-x游戏实例(6)-A星算法(2)

發布時間:2024/4/11 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2d-x游戏实例(6)-A星算法(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

小滿(bill man)個人原創,歡迎轉載,轉載請注明地址,小滿(bill man)的專欄地址http://blog.csdn.net/bill_man

上一篇中我們研究了A星算法的基本概念,本篇介紹A星算法的具體實現。

首先函數從findpath函數開始,初始化的內容如下


首先是把當前位置和目標位置賦給我們這個類的成員變量,然后把我們的地圖變量傳入到成員變量map中,然后分別初始化openclosepath列表,其中pathclose列表先為空,open列表中為了進行堆排序時方便(堆排序時從索引0開始時,索引乘二還是0,所以這樣會造成不便)。然后把起點加入到open列表中,這里涉及到geth的估計函數,因為到起點的代價是0,從起點到終點的估計函數geth如下:


我們選取的這個估計函數比較簡單,就是分別算從本點到目標點的橫縱索引值,并把它乘以10,我們把臨近格之間的代價定為10,那么對角線的代價就是1410*根號2)。繼續回到findpath中,我們開始真正的搜索了


我們遍歷open列表中的元素,首先通過fromopentoclose()函數把open列表中的第一個元素(第0個元素無效,前文已經說過了)刪除并把他加入到close列表中。fromopentoclose函數如下


首先從open中把第一個元素并把它加入到close函數中,然后在removefromopen函數中把open列表中的第一個函數換成open中的最后一個函數,底下進行一下堆排序,這里簡單說一下堆排序,就是把整個的數組看成是一個樹形結構,然后保證父節點比子節點的f值小即可,這樣一來,第一個元素就是最好的

如有錯誤之處,希望大家多多指正

下一篇繼續A星算法游戲實例

總結

以上是生活随笔為你收集整理的cocos2d-x游戏实例(6)-A星算法(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。