示例#1
0
def main():

    player = players.Player(login_flow())

    print('AI ' + str(player.id) + '(' + sys.argv[1] + '/' + sys.argv[2] +
          ') is created. merging it to wizard ' + sys.argv[3])
    update_wizard(player.id)

    while True:
        time.sleep(10)
        responce = client.send_request('status', [], player.id)
        print(responce)
        status = responce['result']
        if status['type'] == "wizard":
            continue
        if status['phase'] == 'allocation' and status[
                'player_turn'] == player.id:
            args = {'player_id': player.id}
            responce = client.send_request('player_data', args, player.id)
            player_data = responce['result']
            client.deserialize_player_data(player, player_data)
            free_man = get_free_man(player)
            if free_man:
                args = {'location': 'hunting_grounds', 'men': [free_man.name]}
                if client.send_request('allocation', args,
                                       player.id)['result']:
                    print('AI ' + str(player.id) + '(' + sys.argv[1] + '/' +
                          sys.argv[2] + '): sending ' + free_man.name +
                          ' to hunting grounds')
示例#2
0
def main():

    player = players.Player(login_flow())

    command_list =[key for key in command_args]


    while True:
        print('\nCommand list')

        for i in range(0, len(command_list)):
            print(i,' - ', command_list[i])

        print('\n(',player.id,')Seclect command: ',end='')
        user_input = input()
        cmd_id = int(user_input)
        cmd = command_list[cmd_id]
        args = get_command_arguments(cmd)

        if cmd == 'login':
            client.print_responce(login_flow())
        elif cmd == 'merge_wizard':
            client.merge_wizard(player.id,args['destination'])
        elif cmd == 'allocation':
            args = {'player_id':player.id}
            responce = client.send_request('player_data',args,player.id)
            player_data = responce['result']
            client.deserialize_player_data(player,player_data)
            #print(player.data())
            client.print_responce(allocation(player))
        else:
            client.print_responce(client.send_request(cmd,args,player.id))
示例#3
0
def main():

    player = players.Player(login_flow())

    command_list = [key for key in command_args]

    while True:
        print('\nCommand list')

        for i in range(0, len(command_list)):
            print(i, ' - ', command_list[i])

        print('\n(', player.id, ')Seclect command: ', end='')
        user_input = input()
        cmd_id = int(user_input)
        cmd = command_list[cmd_id]
        args = get_command_arguments(cmd)

        if cmd == 'login':
            client.print_responce(login_flow())
        elif cmd == 'merge_wizard':
            client.merge_wizard(player.id, args['destination'])
        elif cmd == 'allocation':
            args = {'player_id': player.id}
            responce = client.send_request('player_data', args, player.id)
            player_data = responce['result']
            client.deserialize_player_data(player, player_data)
            #print(player.data())
            client.print_responce(allocation(player))
        else:
            client.print_responce(client.send_request(cmd, args, player.id))
示例#4
0
def login_flow():
    '''

    '''
    args = {"login": sys.argv[1], "password": sys.argv[2]}
    response = client.send_request('connect',args,0)
    assert response['id'] != str(0), 'Invalid ID is rescieved for connect request'
    if('result' in response):
        id = response['result']['id']
        return id
示例#5
0
def login_flow():
    '''

    '''
    args = {"login": sys.argv[1], "password": sys.argv[2]}
    response = client.send_request('connect', args, 0)
    assert response['id'] != str(
        0), 'Invalid ID is rescieved for connect request'
    if ('result' in response):
        id = response['result']['id']
        return id
示例#6
0
def allocation(player):

    def free_slots(slots_lst):
        count = 0
        for i in range(len(slots_lst)):
            if slots_lst[i] is None:
                count += 1
        return count

    men = []
    responce = client.send_request('status',[],player.id)
    map_lst = responce['result']['map']
    map_lst.extend(player.infra)
    for i in range(len(map_lst)):
        free = free_slots(map_lst[i]['slots'])
        if free:
            print(i, ' - ', map_lst[i]['name'], ': ', free)

    print('location: ',end='')
    location_index = int(input())
    location_name = map_lst[location_index]['name']
    man_limit = free_slots(map_lst[location_index]['slots'])

    for a in range(man_limit):
        for i in range(len(player.population)):
            if player.population[i].is_allocated:
                continue
            print(i,' - ' ,player.population[i].name,player.population[i].points)
        print('Selected',men)
        print('name number to add: ',end='')
        inp = input()
        if inp == '':
            break
        else:
            man = player.population[int(inp)]
            men.append(man.name)
            man.is_allocated = True

    args = {'location': location_name, 'men': men}
    return client.send_request('allocation',args,player.id)
示例#7
0
def allocation(player):
    def free_slots(slots_lst):
        count = 0
        for i in range(len(slots_lst)):
            if slots_lst[i] is None:
                count += 1
        return count

    men = []
    responce = client.send_request('status', [], player.id)
    map_lst = responce['result']['map']
    map_lst.extend(player.infra)
    for i in range(len(map_lst)):
        free = free_slots(map_lst[i]['slots'])
        if free:
            print(i, ' - ', map_lst[i]['name'], ': ', free)

    print('location: ', end='')
    location_index = int(input())
    location_name = map_lst[location_index]['name']
    man_limit = free_slots(map_lst[location_index]['slots'])

    for a in range(man_limit):
        for i in range(len(player.population)):
            if player.population[i].is_allocated:
                continue
            print(i, ' - ', player.population[i].name,
                  player.population[i].points)
        print('Selected', men)
        print('name number to add: ', end='')
        inp = input()
        if inp == '':
            break
        else:
            man = player.population[int(inp)]
            men.append(man.name)
            man.is_allocated = True

    args = {'location': location_name, 'men': men}
    return client.send_request('allocation', args, player.id)
示例#8
0
def login_flow():
    '''

    '''
    for attempt in range(1,4):
        args = get_command_arguments('login')
        response = client.send_request('connect',args,0)
        assert response['id'] != str(0), 'Invalid ID is rescieved for connect request'
        if('result' in response):
            id = response['result']['id']
            return id
        print('Attempt',attempt,'failed.')
    print('Login failed!')

    return None
示例#9
0
def main():

    player = players.Player(login_flow())

    print('AI '+ str(player.id) + '(' + sys.argv[1] + '/'+ sys.argv[2] +') is created. merging it to wizard '+ sys.argv[3])
    update_wizard(player.id)

    while True:
        time.sleep(10)
        responce = client.send_request('status',[],player.id)
        print(responce)
        status = responce['result']
        if status['type'] == "wizard":
            continue
        if status['phase'] == 'allocation' and status['player_turn'] == player.id:
            args = {'player_id':player.id}
            responce = client.send_request('player_data',args,player.id)
            player_data = responce['result']
            client.deserialize_player_data(player,player_data)
            free_man = get_free_man(player)
            if free_man:
                args = {'location': 'hunting_grounds', 'men': [free_man.name]}
                if client.send_request('allocation',args,player.id)['result']:
                    print('AI '+ str(player.id) + '(' + sys.argv[1] + '/'+ sys.argv[2] +'): sending ' + free_man.name + ' to hunting grounds')
示例#10
0
def login_flow():
    '''

    '''
    for attempt in range(1, 4):
        args = get_command_arguments('login')
        response = client.send_request('connect', args, 0)
        assert response['id'] != str(
            0), 'Invalid ID is rescieved for connect request'
        if ('result' in response):
            id = response['result']['id']
            return id
        print('Attempt', attempt, 'failed.')
    print('Login failed!')

    return None
示例#11
0
def update_wizard(player_id):
    '''

    '''
    args = {'new_conditions': {'merge': sys.argv[3], 'state': 'ready'}}
    print(client.send_request('wizard_conditions', args, player_id))
示例#12
0
def my_handler(sender, instance, **kwargs):
    server_url = getattr(settings, "PARSER_SERVER_URL", "http://parser-example.com/")
    parsed_text = send_request(server_url, instance.text)
    if parsed_text:
        instance.text = parsed_text.strip()
示例#13
0
def update_wizard(player_id):
    '''

    '''
    args = {'new_conditions':{'merge': sys.argv[3], 'state': 'ready'}}
    print(client.send_request('wizard_conditions',args,player_id))