A* 算法的erlang实现,下面的代码在get_neighbour_coord函数里面使用到了判断坐标是否可走的map:is_movable_coord 函数,需要自己去实现并替换。
以下是源码:
%%=========================astar.erl=====================================
%% ====================================================================
%% API functions
%% ====================================================================
-export([find_path_by_astar/5]).
-record(pathcoord, {g=0,f=0,now_pos={},parent_coord={}}).
%%=========================================================
%% A*寻路算法 written by pjc
%%=========================================================
%% 假设下面是一张小地图
%% y ----------------------------------------------------------------------------------
%% * |(0,9) | (1,9) | (2,9) | (3,9) | (4,9) | (5,9) | (6,9) | (7,9) | (8,9) | (9,9) |
%% * |-------|--------|-------|-------|-------|--------|-------|-------|-------|-------|
%% * |(0,8) | (1,8) | (2,8) | (3,8) | (4,8) | (5,8) | (6,8) | (7,8) | (8,8) | (9,8) |
%% * |-------|--------|-------|-------|-------|--------|-------|-------|-------|-------|
%% * |(0,7) | (1,7) | (2,7) | (3,7) | (4,7) | (5,7) | (6,7) | (7,7) | (8,7) | (9,7) |
%% * |-------|--------|-------|-------|-------|--------|-------|-------|-------|-------|
%% * |(0,6) | (1,6) | (2,6) | (3,6) | (4,6) | (5,6) | (6,6) | (7,6) | (8,6) | (9,6) |
%% * |-------|--------|-------|-------|-------|--------|-------|-------|-------|-------|
%% * |(0,5) | (1,5) | (2,5) | (3,5) | (4,5) | (5,5) | (6,5) | (7,5) | (8,5) | (9,5) |
%% * |-------|--------|-------|-------|-------|--------|-------|-------|-------|-------|
%% * |(0,4) | (1,4) | (2,4) | (3,4) | (4,4) | (5,4) | (6,4) | (7,4) | (8,4) | (9,4) |
%% * |-------|--------|-------|-------|-------|--------|-------|-------|-------|-------|
%% * |(0,3) | (1,3) | (2,3) | (3,3) | (4,3) | (5,3) | (6,3) | (7,3) | (8,3) | (9,3) |
%% * |-------|--------|-------|-------|-------|--------|-------|-------|-------|-------|
%% * |(0,2) | (1,2) | (2,2) | (3,2) | (4,2) | (5,2) | (6,2) | (7,2) | (8,2) | (9,2) |
%% * |-------|--------|-------|-------|-------|--------|-------|-------|-------|-------|
%% * |(0,1) | (1,1) | (2,1) | (3,1) | (4,1) | (5,1) | (6,1) | (7,1) | (8,1) | (9,1) |
%% * |-------|--------|-------|-------|-------|--------|-------|-------|-------|-----