自動尋路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...