|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import lombok.Data; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.io.Serializable; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * A*寻路算法Node节点 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Data | 
|---|
|  |  |  | public class NavigateNode implements Comparable<NavigateNode>{ | 
|---|
|  |  |  | public class NavigateNode implements Comparable<NavigateNode>, Cloneable, Serializable { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private int x;//坐标x | 
|---|
|  |  |  | private int y;//坐标y | 
|---|
|  |  |  | private int z;//坐标z(高度) | 
|---|
|  |  |  | private int F;//综合花费的步数 | 
|---|
|  |  |  | private int G;//已经花费的步数 | 
|---|
|  |  |  | private int H;//将要花费的步数 | 
|---|
|  |  |  | 
|---|
|  |  |  | private Boolean isInflectionPoint;//是否为拐点 | 
|---|
|  |  |  | private String direction;//行走方向 | 
|---|
|  |  |  | private Integer moveDistance;//行走距离 | 
|---|
|  |  |  | private Integer nodeValue;//节点数据 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public NavigateNode(int x, int y) { | 
|---|
|  |  |  | this.x = x; | 
|---|
|  |  |  | 
|---|
|  |  |  | this.Father = father; | 
|---|
|  |  |  | if (this.Father != null) { | 
|---|
|  |  |  | //走过的步数等于父节点走过的步数加一 | 
|---|
|  |  |  | this.G = father.G + 1; | 
|---|
|  |  |  | this.G = father.G + this.G; | 
|---|
|  |  |  | } else { //父节点为空代表它是第一个结点 | 
|---|
|  |  |  | this.G = 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | return Integer.compare(this.F, o.F); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public NavigateNode clone() { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | return (NavigateNode) super.clone(); | 
|---|
|  |  |  | } catch (CloneNotSupportedException e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|