| | |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Objects; |
| | | import java.util.Optional; |
| | | |
| | | /** |
| | |
| | | private String direction; //行走方向 |
| | | private Integer lastDistance; // 距离上个节点距离 |
| | | private Integer moveDistance; // 总行走距离 |
| | | private Integer weight; // G 权重 |
| | | |
| | | private String codeData; |
| | | |
| | |
| | | this.parent = father; |
| | | if (this.parent != null) { |
| | | //走过的步数等于父节点走过的步数加一 |
| | | this.G = father.G + Optional.ofNullable(this.lastDistance).orElse(0); |
| | | this.G = father.G |
| | | + Optional.ofNullable(this.lastDistance).orElse(0) |
| | | + Optional.ofNullable(this.weight).orElse(0); |
| | | } else { //父节点为空代表它是第一个结点 |
| | | this.G = 0; |
| | | } |
| | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public boolean equals(Object obj) { |
| | | if (this == obj) return true; |
| | | if (!(obj instanceof NavigateNode)) return false; |
| | | NavigateNode that = (NavigateNode) obj; |
| | | return this.x == that.x && this.y == that.y; |
| | | } |
| | | |
| | | @Override |
| | | public int hashCode() { |
| | | return Objects.hash(x, y); |
| | | } |
| | | |
| | | public void reset() { |
| | | this.F = 0; |
| | | this.G = 0; |
| | | this.H = 0; |
| | | this.parent = null; |
| | | this.turningPoint = null; |
| | | this.direction = null; |
| | | this.lastDistance = null; |
| | | this.moveDistance = null; |
| | | this.weight = null; |
| | | this.codeData = null; |
| | | } |
| | | |
| | | } |