Javascript - Рандомизированный алгоритм Прима - PullRequest
2 голосов
/ 01 марта 2012

Я пытаюсь создать генератор случайных лабиринтов в JavaScript.

Возможно, уже есть рабочие примеры, но я пытаюсь решить этот вопрос самостоятельно (ну, насколько это возможно)

Проблема, с которой я столкнулся, заключается в том, что мой скрипт запускается только на несколько блоков, а затем останавливается.

Я думаю, что проблема заключается в моем понимании объяснения, которому я следую (с этой страницы Википедии http://en.wikipedia.org/wiki/Maze_generation_algorithm)

Этот алгоритм является рандомизированной версией алгоритма Прима.

  1. Начните с сетки, полной стен.

  2. Выберите ячейку, отметьте ее как часть лабиринта. Добавьте стены ячейки в список стен.

  3. Пока в списке есть стены:

    1. Выберите случайную стену из списка. Если ячейка на противоположной стороне еще не в лабиринте:

      1. Сделайте стену проходом и отметьте клетку на противоположной стороне как часть лабиринта.

      2. Добавьте соседние стены ячейки в список стен.

    2. Если ячейка на противоположной стороне уже была в лабиринте, удалите стену из списка.

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

Я пробовал это с соседними ячейками, и в итоге он просто блокируется.

Любая идея приветствуется.

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

1 Ответ

0 голосов
/ 01 марта 2012

Стена представляет собой связь между двумя различными ячейками.Когда вы добавляете стену в свой список стен, это происходит потому, что вы посещаете ячейку, которая будет частью вашего лабиринта, поэтому когда она ссылается на противоположную, это означает ячейку «за» этой стеной, к которой может привести проход, еслиэтой стены не было.

...