maze.create_border(exits) maze.generate_all_walls(same_branch_probability=0.9) maze_row.append(maze) mazes.append(maze_row) total_width = (MAZE_WIDTH + PADDING) * len(mazes[0]) + PADDING total_height = (MAZE_HEIGHT + PADDING) * len(mazes) + PADDING master_maze = Maze(total_width, total_height) for y, maze_row in enumerate(mazes): y_offset = PADDING + y * (MAZE_HEIGHT + PADDING) for x, maze in enumerate(maze_row): x_offset = PADDING + x * (MAZE_WIDTH + PADDING) # Copy the maze into the master maze for edge in maze.all_edges(): master_edge = Edge(edge.ori, edge.x + x_offset, edge.y + y_offset) master_maze.set_edge(master_edge, maze.get_edge(edge)) # For each exit, add a corridor of length PADDING for i, edge in enumerate(mini_maze.square_edges(x, y)): if mini_maze.get_edge(edge) >= 0: continue padding_dir = CORRIDOR_DIR[i] for corr_pos in xrange(0, PADDING): for offset_from_exit in CORRIDOR_EDGES[i]: exit_edge = maze.border_edges[MAZE_EXITS[i]] corr_edge = Edge( offset_from_exit.ori, exit_edge.x + offset_from_exit.x + x_offset, exit_edge.y + offset_from_exit.y + y_offset)