最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【A*算法】C++實現(xiàn)及地圖尋路

2020-05-09 08:30 作者:GC_CH  | 我要投稿

? ? 首先看一下效果吧:

WPF地圖制作程序

????首先是點擊“打開”菜單導入了一張背景圖,接著點擊“設置”菜單設置地圖的大?。ㄒ簿褪菐仔袔琢校?,然后點擊“標記障礙”工具畫出了紅色的障礙物,再設置一下藍色的起點和綠色的終點并點擊“測試”就得出了黃色的路徑了。

????“導出”菜單用于導出地圖,也就是用二維數(shù)組表示的地圖,0表示可以通行,1表示障礙物。

導出的地圖數(shù)據(jù)放在同級目錄下的data.txt文件中,該文件是這樣的:

?????第一行是是地圖的行數(shù)m和列數(shù)n,其余數(shù)據(jù)有m行n列,對應地圖中的格子是否有障礙物。

????該程序是C#的WPF程序,而A*算法的功能在由C++實現(xiàn)的DLL中。

? ? 壓縮包可以在?https://github.com/WhiteOrangeChen/Projects 下載,名稱為“地圖制作”,包含了一個exe程序,AStar.dll及C++,WPF源碼及一個使用說明文檔。

????提示,可以用來做小游戲哦^_^。


A*算法的C++實現(xiàn)

????A*算法的主流程:

????

????如果找到路徑,則返回一個路徑的逆序單鏈表;否則否則空。

其中,Node的定義如下:

????Point是一個只包含 int x, y; 的結構體。

????Map是一個描述地圖的結構體:

????添加節(jié)點的函數(shù):

????也就是只有沒訪問過的才會加入隊列中進行擴展,其中nodes是一個鏈表,保存了實際的節(jié)點數(shù)據(jù),而隊列queue和visit中保存的都是節(jié)點指針,以便更高效。

????曼哈頓距離的求法,就是 |x1-x2| + |y1-y2|,對于不同的問題,需要的估計代價的函數(shù)不同,具體問題具體分析。

????擴展節(jié)點的函數(shù)

上下左右移動的函數(shù)

????判斷一個點是否有效的函數(shù)

????

最后

????需要幫助的話可以提出來的,也可以合作開發(fā)程序。

【A*算法】C++實現(xiàn)及地圖尋路的評論 (共 條)

分享到微博請遵守國家法律
驻马店市| 修武县| 牙克石市| 湾仔区| 德钦县| 镇平县| 永年县| 来宾市| 台北县| 资兴市| 香港 | 边坝县| 石屏县| 徐汇区| 高青县| 栾川县| 会泽县| 晋州市| 上高县| 分宜县| 英山县| 沾益县| 通化市| 澎湖县| 闵行区| 通化县| 中山市| 个旧市| 顺义区| 德惠市| 舟山市| 固阳县| 无为县| 白河县| 平凉市| 阜新| 瑞安市| 特克斯县| 淳安县| 英吉沙县| 旌德县|