資料結構和演算法 自動尋路A 演算法實現

2021-10-07 04:27:41 字數 1990 閱讀 5707

自動尋路a*演算法實現

#include #include #include #include //用於求起始點到終點距離,平方根函式

using namespace std;

const int kcost1 = 10; //直移一格的消耗:每走一格的位置

const int kcost2 = 14; //斜移乙個的消耗:本次不實現

typedef struct point point;

static int* map; //全域性二維陣列地圖

static int lines; //行數

static int columns; //列數

static listopenlist; //開放列表

static listcloselist; //關閉列表

int mazemap[13][13] = ,

, ,

, ,

, ,

, ,

, ,, };

//1.初始化迷宮地圖

void initastarmaze(int* maze, int line, int column)

//2.初始化分配乙個節點

point* allocpoint(int x, int y)

//從開放列表中返回f值最小的節點

static point* getleastfpoint()

} return respoint;

} return null;

}//判斷節點是否在關閉或者開放列表中

static point* isinlist(const list& list, const point* point)

} return null;

}//判斷節點是否可以移動

static bool iscanreach(const point* point, const point* target)

//判斷是否是相鄰的點,使用moth庫中的abs絕對值

if (abs(point->y - target->y) + abs(point->x - target->x) == 1)

else

}//獲取當前位置周圍可移動的節點

static vectorgetsurroundpoints(const point* point)

else

} }return surroundpoints;

}//計算fgh的值

static int calcg(point* star, point* point)

static int calch(point* point, point* end)

static int calcf(point* point)

//搜尋從起點到終點的最佳路徑:返回終點的位置

static point* findepath(point* startpoint, point* endpoint) else

delete target;

}} //4.結束

surroundpoints.clear();

point* respoint = isinlist(openlist, endpoint);

if (respoint)

} return null;

}//3.使用a*演算法尋找路徑

listastargetpath(point* startpoint, point* endpoint)

return path;

}//4.清理資源

void astraclear()

for (it = closelist.begin(); it != closelist.end();)

}//測試

void astartest()

astraclear();

}int main(void)

python尋路 A 尋路演算法 python實現

coding utf 8 import math import cv2 as cv class point object def init self,position,parent self.position position self.parent parent self.f 0 self.g 0...

自動尋路演算法(A 演算法)分享

一 為什麼地圖網格化?位置描述 滑鼠位置使用畫素座標描述。地圖位置使用經度緯度描述。為了方便描述地圖上元素的位置,將地圖網格化。二 什麼是曼哈頓距離?曼哈頓距離 manhattan distance 兩點在南北方向上的距離加上在東西方向上的距離,即d i,j xi xj yi yj 計算曼哈頓距離時...

UWP開發 自動生成迷宮 自動尋路演算法(2)

之後我們編寫乙個類,同時建立乙個list,將list與前端的rectangle繫結。public static listrects rects new list public class rect public int y 以左上角為1,1 public string color for int x...