в зависимости от того, чего вы на самом деле хотите достичь, у меня есть два решения для вас.
оба они в основном представляют собой алгоритм, представленный на веб-сайте, на который вы ссылаетесь.
1.) В вашем лабиринте есть блоки на предопределенных позициях
- Вы запускаете алгоритм на
2*k+1
сетке
- предположим, что нумерация ваших клеток начинается сверху слева с (0,0).
пометить все ячейки с 2 нечетными координатами (
(2*p+1, 2*q+1); p,q < k
) как блоки.
- вы запускаете измененный алгоритм из вашего источника в оставшихся ячейках («четные ячейки»).
модификации:
- начать с четной ячейки, выбранной случайным образом
- «соседняя ячейка» - это вторая, но следующая ячейка в любом направлении сетки;
то есть вы «перепрыгиваете» через кирпич.
- вместо того, чтобы сбивать стену между клетками,
Вы превращаете блок в доступную клетку.
однако эта ячейка не будет учитываться при выборе
и возврат
2.) Вместо стен, разделяющих ячейки, вы хотите блоки.
перед запуском алгоритма пометить любое количество ячеек как блоки.
действуйте, как описано в вашем источнике, но никогда не рассматривайте ни одну из блочных ячеек.
вам придется принять особые меры предосторожности, если вы хотите, чтобы гарантировать
полная доступность в вашем лабиринте. простая схема будет никогда не отмечать ячейку
как блок, имеющий более 1 блока в качестве соседей.
надеюсь, что эти идеи соответствуют вашим потребностям,
С наилучшими пожеланиями, Carsten