A * алгоритм опирается на теорию графов .
Итак, сначала вы должны построить свою комнату в виде графика (каждая комната / этаж - это вершина или узел, а каждая дверь - это ребро). Я предлагаю вам использовать известные реализации для этого ( здесь является примером).
Исходя из вашей схемы, ваш график должен выглядеть следующим образом
Сохраните HashMap (или что-то еще), чтобы отслеживать, какая комната сопоставлена с каким узлом, а также какой коридор связан с каким краем.
Затем, когда ваше использование требует пути, вычислите ваш алгоритм A *. Пример, который я вам привел, будет выглядеть примерно так
List<Node> path = aStar.findPath();
Переназначить список узлов в список комнат и показать его вашему пользователю.
NB. Если вы хотите сделать его очень чистым, вы можете переписать AStar.java
, чтобы принять список Room
, и заставить его выплевывать другой список Room
.