Esempio n. 1
0
        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)