Miklix

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

Публикувано: 16 февруари 2025 г. в 20:51:21 ч. UTC
Последна актуализация: 12 януари 2026 г. в 9:04:52 ч. UTC

Генератор на лабиринти, използващ алгоритъма „Лов и убийство“, за да създаде перфектен лабиринт. Този алгоритъм е подобен на рекурсивния Backtracker, но е склонен да генерира лабиринти с малко по-къси, криволичещи коридори.

Тази страница е машинно преведена от английски език, за да бъде достъпна за възможно най-много хора. За съжаление машинният превод все още не е съвършена технология, така че могат да възникнат грешки. Ако предпочитате, можете да видите оригиналната версия на английски език тук:

Hunt and Kill Maze Generator

Алгоритъмът „Лов и убийство“ всъщност е модифицирана версия на рекурсивния метод за връщане назад. Модификацията се състои в систематично сканиране (или „лов“) за нова клетка, от която да се продължи, когато не може да се продължи по-нататък, за разлика от истинското рекурсивно търсене, което винаги ще се връща към предишната клетка в стека.

Поради това, този алгоритъм може лесно да бъде адаптиран за генериране на лабиринти с различен външен вид и усещане, само като се избере да се влиза в режим „лов“ по-често или според специфични правила. Версията, реализирана тук, влиза в режим „лов“ само когато не може да се отдалечи по-далеч от текущата клетка.

Перфектен лабиринт е лабиринт, в който има точно един път от всяка точка в лабиринта до всяка друга точка. Това означава, че не можете да се въртите в кръг, но често ще срещате задънени улици, което ще ви принуди да се обърнете и да се върнете обратно.

Генерираните тук карти на лабиринта включват версия по подразбиране без начални и крайни позиции, така че можете да ги определите сами: ще има решение от всяка точка в лабиринта до всяка друга точка. Ако искате да получите вдъхновение, можете да активирате предложена начална и крайна позиция - и дори да видите решението между двете.


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








Относно алгоритъма „Лов и убийство“

Алгоритъмът „Лов и убийство“ е прост, но ефективен метод за генериране на лабиринти. Той е донякъде подобен на търсене в дълбочина (т.е. алгоритъма Recursive Backtracker), с изключение на това, че когато не може да се придвижи по-далеч от текущата позиция, той систематично сканира (или „ловува“) лабиринта, за да намери нова клетка, от която да продължи. Алгоритъмът се състои от две основни фази: ходене и търсене.

Как работи алгоритъмът „Лов и убийство“ за генериране на лабиринти

Стъпка 1: Започнете от произволна клетка

  • Намерете произволна клетка в мрежата и я маркирайте като посетена.

Стъпка 2: Фаза на ходене (Случайно ходене)

  • Изберете случаен непосетен съсед.
  • Преместете се до този съседен участък, маркирайте го като посетен и прочертайте път между предишната и новата клетка.
  • Повтаряйте, докато не останат непосетени съседи.

Стъпка 3: Фаза на лов (връщане назад чрез сканиране)

  • Сканирайте мрежата ред по ред (или колона по колона).
  • Намерете първата непосетена клетка, която има поне един посетен съсед.
  • Свържете тази клетка с посетен съсед, за да възобновите фазата на ходене.
  • Повтаряйте, докато не бъдат посетени всички клетки.

Допълнително четене

Ако ви е харесала тази публикация, може да ви харесат и тези предложения:


Споделете в BlueskyСподелете във FacebookСподелете в LinkedInСподелете в TumblrСподелете в XСподелете в LinkedInЗакачи в Пинтерест

Микел Кристенсен

За автора

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