距自己上一次在园子里写东西,已经3个月有余了。今天用JAVA写了一下A*寻路,相信这个园子里的大多数人都是知道A*的,在这个断言的基础上,鄙人就不去过分描述了,废话不多说,直接上代码吧!(PS:我用二维数组模拟了二维地图,其中“0”为走得通的路,“1”为墙或其他过不去的障碍物。)
代码源文件:1.StarNode.java
2.AStar.java
import java.awt.Point;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class StarNode {
//相邻点
private LinkedList neighbors = new LinkedList();
//自身点位置
Point location;
//前一个节点
StarNode searchParent;
//当前已花费路径成本
int hasCost;
/**
* 构造
* @param location
*/
StarNode(Point location){
this.location=location;
}
/**
* 获取相邻点(8领域)
*/
List getNeighbors(){
List neighbors = new ArrayList();
int x =location.x;
int y =location.y;
// 左上
neighbors.add(new StarNode(new Point(x-1,y-1)));
// 左
neighbors.add(new StarNode(new Point(x-1,y)));
// 左下
neighbors.add(new StarNode(new Point(x-1,y+1)));
//上
neighbors.add(new StarNode(new Poin