我的*路径查找算法仅适用于某些情况,但我不明白为什么。我的网格中的每个节点都是可以步行的,所以理论上每个路径都应该有效我相信错误就在这一行:
PathFindingNode *neighbor = NULL;
if ((y > 0 && x > 0) && (y < gridY - 1 && x < gridX - 1))
neighbor = [[grid objectAtIndex:x + dx] objectAtIndex:y +dy];
答案 0 :(得分:2)
在功能-(void)addNeighbors:
中,行
if ((y > 0 && x > 0) && (y < gridY - 1 && x < gridX - 1))
neighbor = [[grid objectAtIndex:x + dx] objectAtIndex:y +dy];
有bug,因为如果curNode
在边界上,它不会在队列中添加邻居。因此算法永远不会在四个角落到endNode
(即[0,0],[gridX-1,0],[0,gridY-1],[gridX-1,gridY-1])