2012-02-29 2 views
2

Я пытаюсь создать генератор случайных лабиринтов в javascript.Javascript - алгоритм рандомизированного алгоритма Prim. Алгоритм рандомизированного Prim.

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

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

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

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

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

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

  3. Хотя есть стены в списке:

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

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

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

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

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

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

будет оценена Любая идея-х.

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

+0

Если это домашнее задание, пометьте его как таковой. – j08691

+1

hahaha совсем нет! Я играл с алгоритмом поиска *, и я хотел сделать лабиринт для него! – james

ответ

0

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

+0

Ahh, я вижу, это может быть, где я падаю. Мои стены - всего лишь несколько блоков.Могу ли я применить этот алгоритм? – james

+0

Ну, в алгоритме не указаны какие-либо детали реализации, насколько вы согласны с тем, как вы представляете ячейки и стены и как вы их относитесь, тогда у вас не должно быть проблем – Win32

+0

hmmm Я, возможно, смотрю на это все неправильно. Я вижу, как у меня есть 10 x 10 квадратных. Я выбираю блок в этом квадрате и устанавливаю его как свой начальный блок. Я добавляю 4 блока вокруг этого в список моих стен .. и применяю алгоритм. Хотя из того, что каждый пример я видел и из того, что, как я думаю, ваше высказывание .. это неправильно? – james