/**
* 对角启发函数
* @param node
* @return
*/
diagonal(row1, col1, row2, col2) {
var dx = Math.abs(col1 - col2)
var dy = Math.abs(row1 - row2)
var diag = Math.min(dx, dy)
var straight = dx + dy
return this._diagCost * diag + this._straightCost * (straight - 2 * diag)
}
在斜45度地图中,通过如上启发函数计算h值,最终寻找出来的路径不对。如上图所示从(42,14)走到(38,12)格子路径不对,白线是正确的路线,红线是错的。我觉得原因是启发函数有点问题,希望大佬们帮忙看看解决一下,跪谢。
Git 源码地址:https://github.com/cengbin/web-example/blob/master/example/mygame/AStar.js#L144-L151
Demo演示地址:
https://cengbin.github.io/web-example/example/mygame/index.html