行と列の数を指定してランダムな迷路を生成する機能があり、すべてが完全に細かく刻まれています...私がやりたいのは、迷路の中にある可能性のある壁と囲いを削除/削除して、迷路になるようにすることです「行き止まり」はありません。私は次のことを試しましたが、うまくいかないようです...誰もが私がどこで間違っているのかわかります
def random_maze_without_deadends(row,cols):
maze = random_maze(row,cols) #this will generate a random maze and carve out a maze where all cells are defaulted to no value
for i in xrange(row):
for j in xrange(cols):
z = maze.open_directions(i,j) # assume maze.open_direction open's up the maze by Returning a list of open (non-wall) directions from a cell given by row column
walls = ['N','S','W','E'] #preassigned values for north south west and east respectively to check open 'walls' of cells
if i == 0:
walls.remove('N')
if i == i -1:
walls.remove('S')
if j == 0:
walls.remove('W')
if j == j-1:
walls.remove('E')
if len(z) == 1:
walls.remove(z[0])
return maze
以下は、前のコードでも使用されているものです。
class MazeCell:
def __init__(self, r, c):
self.row = r
self.col = c
self.directions = ["N", "S", "E", "W"]
random.shuffle(self.directions)
def random_maze(rows,cols):
maze = Maze(rows, cols)
carve_passages_stack(maze)
return maze
私の主な質問は、基本的にデッドエンド関数のロジックの何が問題になっているのかということです。私が何を意味するのか理解しようと試みてくれてありがとう。
更新-これは私の現在の出力です:
_________
| | _ | |
| |_ | | |
|_____| | |
| __x|_ | <---This part should get opened up---where the x is as north south and east are clos
|_________|