android java A* Нужна помощь в поиске пути
Я наткнулся на следующую ссылку: http://code.google.com/p/a-star/source/browse/trunk/java/PathFinder.java?r=8 У меня есть код, работающий нормально в качестве теста, но Я не уверен, как вы измените узел назначения - по умолчанию справа внизу, но я не уверен, как вы измените его на другую строку / столбец, спасибо
2 ответа
Кажется, что цель определена в функции
protected boolean isGoal(Node node){
return (node.x == map[0].length - 1) && (node.y == map.length - 1);
}
измените это к своим потребностям.
Я думаю, что проблема в этой части кода:
protected List<Node> generateSuccessors(Node node){
List<Node> ret = new LinkedList<Node>();
int x = node.x;
int y = node.y;
if(y < map.length - 1 && map[y+1][x] == 1)
ret.add(new Node(x, y+1));
if(x < map[0].length - 1 && map[y][x+1] == 1)
ret.add(new Node(x+1, y));
return ret;
}
Этот код возвращает список соседей для текущего узла, однако он только пытается вниз и в правильном направлении. Попробуйте добавить соответствующий код для любых других направлений, которым вы хотите следовать, например,
if(y > 0 && map[y-1][x] == 1)
ret.add(new Node(x, y-1));
if(x > 0 && map[y][x-1] == 1)
ret.add(new Node(x-1, y));
от
A* Pathfinding Java не работает должным образом
Это работает, но выполнение очень медленное, любое предложение сократить время выполнения???