2016-06-05 8 views
-3

Ich versuche, einen Python-Labyrinth-Generator zu machen, aber ich bekomme immer einen IndexError: Liste Index außerhalb des Bereichs. Irgendwelche Ideen? Ich bin ein bisschen neu in diesem Zeug, also habe ich den Code von rosetta code auf Labyrinth-Generation verwendet. Ich male gerade nicht das Labyrinth. Ich will nur, dass der Algorithmus jetzt funktioniert.Python Maze Generation

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)) 
+3

Das sieht wie eine Endlosschleife aus, die blind in alle Richtungen aus der "Labyrinth" -Matrix herauskommt. – melpomene

Antwort

0

Ihr Code hat einige Ähnlichkeit mit, was rosetta Code. Hier ist mein Versuch. Ich habe es nicht getestet.

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())