cocos2d-x游戏实例(7)-A星算法(3)
小滿(bill man)個人原創,歡迎轉載,轉載請注明地址,小滿(bill man)的專欄地址http://blog.csdn.net/bill_man
繼續上一篇的內容,我們再看我們上一篇進行的部分
然后我們獲得父節點索引,即close列表中的最后一個元素,然后檢測該元素,是否離目標位置只差一個點的距離,如果是的話我們就獲得了路徑,我們首先看如果沒到達目標位置時,我們進行A星搜索的函數
在這里,我們分別找目前位置的地圖索引值,上下左右位置,首先判斷他是否超出了地圖的位置,然后檢測該點是否是地圖中不能去的位置。函數如下
如果沒有到達目標位置,就檢測該點是否是地圖碰撞,如果是碰撞返回false,否則都是true,那么有人會問,我們為什么不檢測目標節點是不是碰撞點呢,因為我們會在搜索前就檢測這個問題。然后繼續回到starseach函數中。后面檢測該點是否在open列表中,如果不在open列表中,則把他加入到open列表中,如果該點已在這個open列表中但是確是個更好的解(f值更小)checkopen函數如下:
我們可以看到遍歷open列表,如果不存在則返回true,否則返回false,如果這是已經在open列表中并且是個更優解,我們在這里就完成我們的替換
之后檢測是否在close列表中就更為簡單,遍歷close列表,如果則返回false,否則返回true,代碼如下:
如有錯誤之處,希望大家多多指正
下一篇繼續A星算法游戲實例
總結
以上是生活随笔為你收集整理的cocos2d-x游戏实例(7)-A星算法(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cocos2d-x游戏实例(6)-A星算
- 下一篇: cocos2d-x游戏实例(9)-A星算