LINUX.ORG.RU

Генератор лабиринтов

 ,


2

2

Решил реализовать алгоритм генерации лабиринтов. Для начала взял алгоритм описанный в этой статье. К сожалению то что получается у моего генератора не соответствует заявленным свойствам алгоритма:

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

Похоже я не так понял описание алгоритма. Поясню проблему на примере. Вот первые три ячейки левого края первой строки, множества определились как (1 | 2 2) - генератор решил построить стенку только между первыми двумя ячейками, но все три ячейки снизу решил не ограничивать. Т.е. на второй строке к 3-му шагу имеем карту множеств: (1 2 2) и делаем 3-й шаг. Первая стенка - решил не строить, карта: (1 1 2), вторая стена опять решил не строить карта: (1 1 1). Всё - в лабиринте цикл.

Генератор ведь строго по описанному алгоритму шёл?

★★★★★

Блин, походу понял свою ошибку: после того как генератор решил не строить первую стенку во второй строке карта множеств должна быть (1 1 1).

ados ★★★★★
() автор топика
Ответ на: комментарий от anonymous

В чате можно поговорить с кем-либо в режиме реального времени. :-)

anonymous
()

На хабаре есть еще один алгоритм вроде как алгоритм

На хабаре есть еще один алгоритм https://habrahabr.ru/post/262345/ - просто и красиво, только нужно вести несколько стеков. В отличии от Эллера -всегда получаются тонкостенные лабиринты

Silerus ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.