Затопить область и построить Звездный путь - PullRequest
0 голосов
/ 11 октября 2018

Рассмотрим пошаговую игру на двумерной сетке, где фигура может переместиться в незанятую ячейку, если для ее достижения требуется только определенное количество шагов.Когда часть выбрана, я хочу выделить все возможные ячейки назначения и отобразить их - здесь я использую заливку для рекурсивного построения карты доступных ячеек, а затем накладываю ее на доску.После того, как выбран правильный квадрат, я затем использую A *, чтобы найти путь к квадрату, по которому будет следовать фрагмент.

Интуитивно кажется, что в этом подходе потрачена впустую работа - я столкнулся с проблемойсоздание набора проходных квадратов, только для того, чтобы выполнить дополнительную работу по его поиску и обходу.

Это кажется общей чертой во многих играх, есть ли уже оптимизированный подход?Или, возможно, учитывая, что результирующая сетка от затопления является нерегулярной, но гарантированно пригодной для прогулок, является ли очевидное переутомление незначительным?

1 Ответ

0 голосов
/ 11 октября 2018

Конечно, просто запомните путь, по которому вы пошли во время заливки (концептуально это скорее поиск в ширину).

Обычно это делается путем запоминания ячейки предшественника во время исследования.Как только у вас будет последняя ячейка (т. Е. Пользователь щелкнет по ней), проложите путь назад, следуя предшествующим ссылкам, пока не найдете начальный узел.Так же, как вы сделали бы в конце A *.Единственное отличие состоит в том, что прямой проход теперь рассчитывается по вашему подходу BFS.

...