From 1f1b11574bbd8a2856acf0f25075199a0fd2ebca Mon Sep 17 00:00:00 2001 From: kesar Date: Wed, 28 Jul 2021 17:50:30 +0800 Subject: [PATCH] fix #3 --- README.md | 4 ++-- src/com/kesar/a/AStar.java | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d64ca64..3304c77 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ A星算法的代价计算使用了被称作是启发式的代价函数。 G的计算方式:计算方式有挺多种的,这里我们就用这种吧,假设每个结点代表一个正方形,横竖移动距离:斜移动距离=1:1.4(根号2),我们取个整数10和14吧,也就是说当前结点G值=父节点的G+(10或14)。 -H的计算方式:估价计算也有很多种方式,我们这里使用“曼哈顿”法,H=|当前结点x值-最终结点x值|+|当前结点y值-最终结点y值|("||"表示绝对值)。 +H的计算方式:估价计算也有很多种方式,我们这里使用“曼哈顿”法,H=(|当前结点x值-最终结点x值|+|当前结点y值-最终结点y值|) * 横竖移动代价值("||"表示绝对值)。 如下图(图不是自己做的,从网上借来的,自己画的话~...惨不忍睹!) @@ -227,7 +227,7 @@ public class MapInfo ```java private int calcH(Coord end,Coord coord) { - return Math.abs(end.x - coord.x) + Math.abs(end.y - coord.y); + return (Math.abs(end.x - coord.x) + Math.abs(end.y - coord.y)) * DIRECT_VALUE; } ``` diff --git a/src/com/kesar/a/AStar.java b/src/com/kesar/a/AStar.java index 39b0d0f..6aebcf5 100644 --- a/src/com/kesar/a/AStar.java +++ b/src/com/kesar/a/AStar.java @@ -150,8 +150,7 @@ private Node findNodeInOpen(Coord coord) */ private int calcH(Coord end,Coord coord) { - return Math.abs(end.x - coord.x) - + Math.abs(end.y - coord.y); + return (Math.abs(end.x - coord.x) + Math.abs(end.y - coord.y)) * DIRECT_VALUE; } /**