Проблема первая:
Линии стен лабиринта неполные, но присутствуют. Длина линии не такая, как должна быть, что приводит к «полулабиринту».
Проблема вторая:
Из-за расширяющегося характера кругового лабиринта каждый слой (или " уровень», как я называю его в сценарии) определяет количество ячеек, помещаемых в указанный слой, что позволяет получить более естественный вид лабиринта вместо лабиринта с коридорами, которые продолжают увеличиваться в размерах по мере удаления от центра. Это вызывает небольшие расхождения при соединении двух слоев вместе. Это не на каждом уровне. Как раз тогда, когда необходимо увеличить количество ячеек.
Эти проблемы на несколько месяцев задержали рост моего проекта, и моя команда становится все менее и менее мотивированной продолжать работу над таким препятствием. Любая помощь очень ценится. Заранее спасибо!
Пример лабиринта, созданного из скрипта
Код: Выделить всё
from PIL import Image, ImageDraw
import math
import random
from collections import deque
class CircularMaze:
def __init__(self, levels, line_len, wall_width, corridor_size, canvas_size):
assert line_len > 0, "Line length must be greater than 0"
self.canvas_size = canvas_size
self.num_levels = levels
self.line_length = line_len
self.wall_width = wall_width
self.corridor_size = corridor_size
self.num_cells_at_level = self.cell_count_by_level()
self.total_cells = sum(self.num_cells_at_level)
def cell_count_by_level(self):
cells_by_level = [1]
for level in range(1, self.num_levels): cells_by_level.append(int(math.pow(2, math.floor(math.log2(level + 1)) + 3)))
return cells_by_level
def index_1d_from_2d(self, level, cell):
if level >= self.num_levels: raise Exception("level greater than maze levels")
idx = 0
for lvl in range(level): idx += self.num_cells_at_level[lvl]
idx += cell
return idx
def index_2d_from_1d(self, idx):
if idx >= self.total_cells: raise Exception("1D index greater than total number of cells")
level = 0
while idx - self.num_cells_at_level[level] >= 0:
idx -= self.num_cells_at_level[level]
level += 1
return level, idx
def parent_index_1d(self, level, cell):
if level
Подробнее здесь: [url]https://stackoverflow.com/questions/78669091/python-maze-generation-using-pil-going-wrong[/url]