Поколение на лабиринта и неговото преминаване

> C ++> Генериране на лабиринт и неговото преминаване

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

Ще генерираме по метода "рекурсивно разделяне".

неговото

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

Резултатът е лабиринт като този:

лабиринта

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

Намиране на път между две точки