Поколение на лабиринта и неговото преминаване
> C ++> Генериране на лабиринт и неговото преминаване
В предишна статия описах метод за генериране на лабиринти от свързани помещения с различни размери. Този път ще анализираме друг начин за генериране на лабиринти, при който лабиринти ще бъдат получени в класическа форма. Също така ще говоря за това как да намеря най-краткия път между всякакви две точки в лабиринта.
Ще генерираме по метода "рекурсивно разделяне".

- Помещението е разделено на 4 секции
- На всякакви три граници вратите се изрязват на произволни места
- Рекурсивно изпълнение на елементи 1. и 2. за всяка от четирите получени секции не се извършва рекурсия в тези секции, в които поне една от страните е равна на 1 клетка.
Резултатът е лабиринт като този:

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