Example #1
0
def play():
    """Initiate a game, using the command line arguments as configuration."""
    arguments = docopt(__doc__)

    if arguments['list_rules']:
        # list all possible game rules
        names = [
            name.replace('.py', '') for name in listdir('rules')
            if '__init__' not in name and '.pyc' not in name
        ]
        print('\n'.join(names))
    elif arguments['list_maps']:
        # list all possible maps
        print('\n'.join(listdir('maps')))
    else:
        # start a game
        # parse arguments
        rules_name = arguments['RULES']
        initial_zombies = int(arguments['-z'])
        minimum_zombies = int(arguments['-n'])
        docker_isolator = arguments['-i']
        debug = arguments['-d']
        isolator_port = int(arguments['-p'])
        use_basic_icons = arguments['-b']
        max_frames = int(arguments['-f'])
        use_arduino = arguments['-a']
        arduino_device = arguments['-v']
        arduino_bauds = int(arguments['-u'])

        player_names = []
        for player_part in arguments['PLAYERS'].split(','):
            if ':' in player_part:
                player_name, count = player_part.split(':')
                count = int(count)
            else:
                player_name = player_part
                count = 1
            player_names.extend([
                player_name,
            ] * count)

        size = arguments['-s']
        if size:
            size = tuple(map(int, size.split('x')))

        map_name = arguments['-m']
        if map_name:
            map_file = path.join('maps', map_name)
            map_ = Map.from_file(map_file)

            if size:
                if size[0] < map_.size[0] or size[1] < map_.size[1]:
                    message = "Map (%s) doesn't fit in specified size (%s) " \
                              "(leave it empty to use best fit)"
                    raise Exception(message % (str(map_.size), str(size)))
                else:
                    map_.size = size
        else:
            if not size:
                size = 30, 10

            map_ = Map(size, [])

        # create and start game
        g = Game(rules_name=rules_name,
                 player_names=player_names,
                 map_=map_,
                 initial_zombies=initial_zombies,
                 minimum_zombies=minimum_zombies,
                 docker_isolator=docker_isolator,
                 isolator_port=isolator_port,
                 debug=debug,
                 use_basic_icons=use_basic_icons,
                 use_arduino=use_arduino,
                 arduino_device=arduino_device,
                 arduino_bauds=arduino_bauds)
        g.play(max_frames)
Example #2
0
def play():
    """Initiate a game, using the command line arguments as configuration."""
    arguments = docopt(__doc__)

    if arguments['list_rules']:
        # list all possible game rules
        names = [name.replace('.py', '')
                 for name in listdir('rules')
                 if '__init__' not in name and '.pyc' not in name]
        print('\n'.join(names))
    elif arguments['list_maps']:
        # list all possible maps
        print('\n'.join(listdir('maps')))
    else:
        # start a game
        # parse arguments
        rules_name = arguments['RULES']
        initial_zombies = int(arguments['-z'])
        minimum_zombies = int(arguments['-n'])
        docker_isolator = arguments['-i']
        debug = arguments['-d']
        isolator_port = int(arguments['-p'])
        use_basic_icons = arguments['-b']
        max_frames = int(arguments['-f'])
        use_arduino = arguments['-a']
        arduino_device = arguments['-v']
        arduino_bauds = int(arguments['-u'])

        player_names = []
        for player_part in arguments['PLAYERS'].split(','):
            if ':' in player_part:
                player_name, count = player_part.split(':')
                count = int(count)
            else:
                player_name = player_part
                count = 1
            player_names.extend([player_name, ] * count)

        size = arguments['-s']
        if size:
            size = tuple(map(int, size.split('x')))

        map_name = arguments['-m']
        if map_name:
            map_file = path.join('maps', map_name)
            map_ = Map.from_file(map_file)

            if size:
                if size[0] < map_.size[0] or size[1] < map_.size[1]:
                    message = "Map (%s) doesn't fit in specified size (%s) " \
                              "(leave it empty to use best fit)"
                    raise Exception(message % (str(map_.size), str(size)))
                else:
                    map_.size = size
        else:
            if not size:
                size = 30, 10

            map_ = Map(size, [])

        # create and start game
        g = Game(rules_name=rules_name,
                 player_names=player_names,
                 map_=map_,
                 initial_zombies=initial_zombies,
                 minimum_zombies=minimum_zombies,
                 docker_isolator=docker_isolator,
                 isolator_port=isolator_port,
                 debug=debug,
                 use_basic_icons=use_basic_icons,
                 use_arduino=use_arduino,
                 arduino_device=arduino_device,
                 arduino_bauds=arduino_bauds)
        g.play(max_frames)