Я создал текстовую игру, которая автоматически генерирует карту с 10x10 комнатами, некоторые из комнат блокируются различными обломками, и я не мог разработать наиболее эффективный способ проверить, не может ли игрок дойти до ключа и добраться до выхода без их отсечения с карты.Java: Как проверить, возможен ли сгенерированный уровень?
В настоящее время существует небольшая вероятность, что необходимые номера отрезаны от остальной части карты, что делает невозможным уровень, я думал о проверке каждого смежного квадрата в исходное положение, а затем повторять и повторять до тех пор, пока все квадраты, которые Доступные доступны в переменной «доступный», а затем, если три объекта не достижимы, просто повторно переверните карту до тех пор, пока они не будут. Это может быть медленным, если он регенерирует несколько раз.
Есть ли у кого-нибудь мысли о повторяющейся части, чтобы поддерживать ее быстро, или лучший способ достичь этого?
Вот изображение сгенерированной карты: # заблокированы комнаты. http://postimg.org/image/8oo88jxgb/
А, я посмотрю на эти алгоритмы и посмотрю, что подойдет мне лучше всего. Позиции сохраняются в виде массивов, поэтому было бы сложно, поскольку для алгоритма Дейкстры нет кратчайшего «расстояния». –
Вы можете смоделировать матрицу в виде графика, где каждая позиция m [i] [j] является узлом с 8 соседними узлами, которые расположены вокруг него. Переход от m [i] [j] к m [i + 1] [j], например, будет считаться 1 единиц измерения расстояния. Я также обновил ответ, предлагая вам проверить алгоритм BSP. –
Я расскажу, как это получится, это будет немного легче, так как игроки не могут двигаться по диагонали. –