AStar Search - Как изменить направление и стоимость? - PullRequest
0 голосов
/ 20 мая 2018

Итак, в реализации поиска A *, над которой я работаю, я могу использовать направления для поиска пути как вверх, влево, вправо, вниз как так:

#define the moving direction: up /left /right /down
xs = (0, -1, 1, 0)
ys = (-1, 0, 0, 1)

Как изменить перемещениеНаправление к: вверх, влево, вправо, вниз, в верхнем левом углу, в левом нижнем углу, в верхнем правом углу и в правом нижнем углу?

Что касается стоимости, то со стрелкой вверх, влево, вправо, вниз у меня 1,0, но если ядолжен был иметь стоимость 2.0 для направлений: верхний левый, нижний левый, верхний правый и нижний правый, как я могу это реализовать?

def get_cost(self, x1, y1, x2, y2):
    if x1 == x2 or y1 == y2:
      return 1.0

1 Ответ

0 голосов
/ 21 мая 2018

ну, вы можете просто проверить и посмотреть, находитесь ли вы в одной и той же позиции по каждой оси или нет.

def get_cost(self, x1, y1, x2, y2):
    if (x1 == x2 and y1 != y2) or (x1 != x2 and y1 == y2):
        # you have just moved in one axis
        return 1.0
    else:
        return 2.0
...