Как использовать поиск в ширину / a* поиск, чтобы найти кратчайший путь к цели?
Я работаю над игрой змеиного ИИ. Я хочу использовать BFS/A*, чтобы найти кратчайший путь к еде. Я знаю координаты еды. На доске есть и другие змеи, поэтому я стараюсь избегать их. У меня есть логика, но как я могу использовать BFS/A*, чтобы найти путь? Например, координата головы моей змеи равна (40,40), так как я могу идти только влево, вправо и вверх (не назад, как остальная часть моей змеи), как я могу добавить их в свою очередь в BFS/A*? Как может расширяться BFS/A*? (Это 2D массив типа платы, ничего особенного). Пример вывода: 1S и 4s-это змеи. 9-это пища.
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 9 0 0 1 0 0 0 0 4 4 4 4 4 4
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 4
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
Каждый поворот вводятся новые координаты, так что движение змей. Цель состоит в том, чтобы использовать BFS/A* для поиска пищи, чтобы змея могла двигаться к ней. BFS/A* будет использоваться для определения моего хода. Помощь будет оценена по достоинству.
Что я уже пробовал:
Я разобрался с координатами. У меня есть размер доски. Так что мой вклад будет следующим
(тип int[][] размер доски, заданная координата х, координата Y цели, змеиная голова х, змеиная голова г)