Miklix

Генератор на лавиринт со алгоритам на растечки дрвја

Објавено: 5 март 2025, во 19:51:33 UTC

Генератор на лавиринт кој го користи алгоритмот Growing Tree за да создаде совршен лавиринт. Овој алгоритам има тенденција да генерира лавиринти слични на алгоритмот Hunt and Kill, но со малку поинакво типично решение.

Оваа страница беше машински преведена од англиски за да биде достапна за што повеќе луѓе. За жал, машинското преведување сè уште не е усовршена технологија, така што може да се појават грешки. Ако сакате, можете да ја видите оригиналната англиска верзија овде:

Growing Tree Algorithm Maze Generator

Алгоритмот Растечко дрво е интересен, бидејќи може да го емулира однесувањето на неколку други алгоритми, во зависност од тоа како е избрана следната ќелија за време на генерирањето. Имплементацијата на оваа страница користи пристап на прво место, сличен на редица.

Совршен лавиринт е лавиринт во кој има точно една патека од која било точка во лавиринтот до која било друга точка. Тоа значи дека не можете да завршите да одите наоколу во кругови, но често ќе наидете на ќорсокак, што ќе ве принуди да се свртите и да се вратите назад.

Мапите на лавиринтот генерирани овде вклучуваат стандардна верзија без никакви позиции за почеток и крај, така што можете сами да ги решите тие: ќе има решение од која било точка во лавиринтот до која било друга точка. Ако сакате инспирација, можете да овозможите предложена почетна и завршна позиција - па дури и да го видите решението помеѓу двете.


Создадете нов лавиринт








За алгоритмот на растечко дрво

Алгоритмот Growing Tree е флексибилен и моќен метод за генерирање совршени лавиринти. Алгоритмот е интересен затоа што може да го емулира однесувањето на неколку други алгоритми за генерирање на лавиринтот, како што е алгоритмот на Прим, рекурзивно враќање назад и рекурзивна поделба, во зависност од тоа како ќе ја изберете следната ќелија за обработка.

Како функционира алгоритмот на растечко дрво

Чекор 1: Иницијализација

  • Започнете со мрежа од непосетени ќелии.
  • Изберете случајна почетна ќелија и додајте ја во список.

Чекор 2: Јамка за генерација на лавиринт

  • Додека списокот со ќелии не е празен:
    • Изберете ќелија од списокот врз основа на одредена стратегија (објаснето подолу).
    • Издлаби премин од избраната ќелија до еден од нејзините непосетени соседи (избран по случаен избор).
    • Додадете го соседот на списокот бидејќи сега е дел од лавиринтот.
    • Ако избраната ќелија нема непосетени соседи, отстранете ја од списокот.

Чекор 3: Престанок

  • Алгоритмот завршува кога нема повеќе ќелии на списокот, што значи дека целиот лавиринт е издлабен.

Стратегии за избор на ќелии (флексибилност на алгоритмот)

Дефинитивната карактеристика на алгоритмот Растечко дрво е како да изберете која ќелија да ја обработувате следната. Овој избор драматично влијае на изгледот на лавиринтот:

Најновата ќелија (однесување налик на оџак) – Рекурзивен повратник:

  • Секогаш избирајте ја неодамна додадената ќелија.
  • Произведува долги, извртени коридори со многу мртви краеви (како лавиринт за пребарување во длабочина).
  • Лавиринтите имаат тенденција да имаат долги премини и лесно се решаваат.

Случајна ќелија (рандомизиран прим алгоритам):

  • Изберете случајна ќелија од списокот секој пат.
  • Создава порамномерно распореден лавиринт со сложени, заплеткани патеки.
  • Помалку долги коридори и повеќе разгранување.

Најстарата ќелија (однесување како редица):

  • Секогаш избирајте ја најстарата ќелија во списокот.
  • Генерира лавиринти со порамномерно ширење, како шема за пребарување во прв план.
  • Кратки, грмушки премини со густи врски.
  • (Ова е верзијата имплементирана овде)

Хибридни пристапи:

Комбинирајте стратегии за различни карактеристики на лавиринтот. На пример:

  • 90% најново, 10% случајно: Изгледа главно како рекурзивен лавиринт за назад, но со повремени гранки кои ги кршат долгите коридори.
  • 50% најнов, 50% најстар: Балансира долги коридори со грмушки раст.

Споделете на BlueskyСподелете на ФејсбукСподелете на LinkedInСподелете на TumblrСподелете на XСподелете на LinkedInЗакачи на Pinterest

Микел Банг Кристенсен

За авторот

Микел Банг Кристенсен
Микел е креатор и сопственик на miklix.com. Тој има над 20 години искуство како професионален компјутерски програмер/развивач на софтвер и моментално е вработен со полно работно време во голема европска ИТ корпорација. Кога не пишува блог, тој го поминува своето слободно време на широк спектар на интереси, хоби и активности, кои до одреден степен може да се рефлектираат во разновидните теми опфатени на оваа веб-локација.