Python迷宫生成

时间:2016-06-05 23:07:32

标签: python maze

我正在尝试创建一个python迷宫生成器,但我不断得到一个IndexError:list index超出范围。有任何想法吗?我对这些东西不熟悉所以我在迷宫生成中使用rosetta code的代码。我现在不画迷宫我只想让算法立即运作。

from random import shuffle, randrange

maze_rows = 10
maze_columns = 10

maze = [[0 for rows in range(maze_rows)] for columns in range(maze_columns)]

def maze_generation(x,y):
    maze[y][x] = 1
    walk = [(x - 1, y), (x, y + 1), (x + 1, y), (x, y - 1)]
    shuffle(walk)

    for (xx, yy) in walk:
        if maze[yy][xx]: continue
        if xx == x:
            maze[max(y,yy)][x] = 1
        if yy == y:
            maze[y][max(x,xx)] = 1

        maze_generation(xx,yy)

maze_generation(randrange(maze_rows),randrange(maze_columns))

1 个答案:

答案 0 :(得分:0)

您的代码与某些相似。这是我的尝试。我还没有测试过。

from random import shuffle, randrange

def make_maze(w = 16, h = 8):
    vis = [[0] * w + [1] for _ in range(h)] + [[1] * (w + 1)]

    def walk(x, y):
        vis[y][x] = 1

        d = [(x - 1, y), (x, y + 1), (x + 1, y), (x, y - 1)]
        shuffle(d)
        for (xx, yy) in d:
            if vis[yy][xx]: continue
            walk(xx, yy)

    walk(randrange(w), randrange(h))
    return vis

print(make_maze())