@classmethod
    def create(cls, layout_str, number_bots):
        layout_chars = maze_components

        if number_bots % 2 != 0:
            raise UniverseException(
                "Number of bots in CTF must be even, is: %i"
                % number_bots)
        layout = Layout(layout_str, layout_chars, number_bots)
        layout_mesh = layout.as_mesh()
        initial_pos = extract_initial_positions(layout_mesh, number_bots)
        maze, food = create_maze(layout_mesh)
        if maze.width % 2 != 0:
            raise UniverseException(
                "Width of a layout for CTF must be even, is: %i"
                % maze.width)

        homezones = [
            (0, maze.width // 2 - 1),
            (maze.width // 2, maze.width - 1)
        ]

        teams = [Team(idx, homezone) for idx, homezone in enumerate(homezones)]

        bots = []
        for bot_index in range(number_bots):
            team_index = bot_index % 2
            bot = Bot(bot_index, initial_pos[bot_index],
                    team_index, homezones[team_index])
            bots.append(bot)

        return cls(maze, food, teams, bots)

    #: All possible (but not necessarily legal) moves
Factory to create a 2 team Capture The Flag Universe.
dataset/ETHPy150Open ASPP/pelita/pelita/datamodel.py/CTFUniverse.create