Example #1
0
def layAnEgg(level, socket):
    inventory, lvl = look_inventory(socket, level)
    food = get_food(inventory)
    if (not enough_food_incant(level, food)):
        search_food_incant_mode(level, food, socket)
    socket.Fork()
    EmptyCacheIgnoreBroadcast(socket, level)
Example #2
0
def look_inventory(socket, lvl):
    socket.Inventory()
    resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
    if level != lvl:
        return resp, level
    if len(resp) > 0 and resp[0] != "ko":
        resp[0] = resp[0][2:-2].split(', ')
    return resp, level
Example #3
0
def incant(socket, food, lvl):
    dire, mess, level = search_before_broadcast(socket, food, lvl)
    if level != lvl:
        return -1, [], level
    if dire != -1 and lvl != 1:
        return dire, mess, lvl
    while food >= lvl + 3:
        count = 0
        SendIncantBroadcast(socket, lvl)
        resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
        if level != lvl:
            return dire, mess, level
        socket.Look()
        resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
        if level != lvl:
            return dire, mess, level
        resp = resp[:1]
        if len(resp) > 0 and resp[0] != "ko":
            resp = resp[0][2:-2].split(',')
            content = resp[0].split(' ')
            for item in content:
                if item == "player":
                    count += 1
        if count == number_of_people_to_incant(lvl):
            socket.Look()
            resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
            if level != lvl:
                return dire, mess, level
            resp = resp[:1]
            resp = resp[0][2:-2].split(',')
            get_all_item_here(socket, resp[0], lvl)
            set_stones(socket, lvl)
            socket.Incantation()
            resp, level = EmptyCacheIgnoreBroadcastIncant(socket, lvl)
            if level != lvl:
                return dire, mess, level
            else:
                ko_incant(socket, lvl)
                return dire, mess, lvl
        inventory, level = look_inventory(socket, lvl)
        if level != lvl:
            return dire, mess, level
        food = get_food(inventory)
    return dire, mess, lvl
Example #4
0
def set_stones(socket, lvl):
    items = GetNeededRessources(lvl)
    for obj in items:
        content = obj.split(' ')
        for i in range(int(content[1])):
            socket.Set(content[0])
            resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
            if level != lvl:
                return level
    return lvl
Example #5
0
def move_to_free_tile(socket, lvl):
    socket.Look()
    resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
    if level != lvl:
        return tile, level
    if len(resp) > 0 and resp[0] != "ko":
        resp = resp[0][2:-2].split(',')
    for tile in range(len(resp)):
        if "player" not in resp[tile]:
            return tile, lvl
    return 0, lvl
Example #6
0
def go_to_tile(nb_forward, nb_side, socket, lvl):
    for i in range(nb_forward):
        socket.Forward()
        resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
        if level != lvl:
            return level
    if (nb_side < 0):
        socket.Left()
        resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
        if level != lvl:
            return level
    elif (nb_side > 0):
        socket.Right()
        resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
        if level != lvl:
            return level
    nb_side = abs(nb_side)
    for i in range(nb_side):
        socket.Forward()
        resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
        if level != lvl:
            return level
Example #7
0
def ko_incant(socket, lvl):
    socket.Look()
    resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
    if level != lvl:
        return level
    resp = resp[:1]
    resp = resp[0][2:-2].split(',')
    get_all_item_here(socket, resp[0], lvl)
    tile, level = move_to_free_tile(socket, lvl)
    if level != lvl:
        return level
    mov_to_tile(tile, lvl, socket)
    return lvl
def search_food_incant_mode(lvl, food, socket):
    while food < lvl + 8:
        location, item, level = IsThereItem(socket, ["food"], lvl)
        if level != lvl:
            return level
        if (location >= 0):
            mov_to_tile(location, lvl, socket)
            socket.Take(item)
            resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
            if level != lvl:
                return level
            inventory, level = look_inventory(socket, lvl)
            if level != lvl:
                return level
            food = get_food(inventory)
            print("search food incant: food i got: " + str(food))
        else:
            for i in range(lvl):
                socket.Forward()
                resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
                if level != lvl:
                    return level
Example #9
0
def survive_mode(lvl, food, socket):
    while food < lvl + 1:
        location, item, level = IsThereItem(socket, ["food"], lvl)
        if level != lvl:
            return level
        if (location >= 0):
            mov_to_tile(location, lvl, socket)
            socket.Take(item)
            resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
            if level != lvl:
                return level
            inventory, level = look_inventory(socket, lvl)
            if level != lvl:
                return level
            food = get_food(inventory)
            print ("SURVIVE: food i got: " + str(food))
        else:
            socket.Forward()
            resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
            if level != lvl:
                return level
    return lvl
Example #10
0
def EmptyCacheFocusBroadcast(socket, lvl):
    mess = []
    dire = -1
    message = []
    direction = -1
    incant = False
    resp = []
    while (len(resp) == 0):
        resp = socket.ReadSocket()
        check_dead(resp)
        i = 0
        while i < len(resp):
            if resp[i].find("message") != -1:
                direction, message = parse_message(socket, resp[i])
                print("ID DIFFERENCE " + str(socket.target_id) + " ?= " + str(message[0]))
                if (len(message) >= 3 and message[1] == "INCANT" and int(message[2]) == lvl and socket.target_id == message[0]):
                    dire = direction
                    mess = message
                    keep = 1
                resp.pop(i)
            elif resp[i].find("Elevation underway") != -1:
                incant = True
                resp.pop(i)
            elif resp[i].find("Current level:") != -1:
                print("FOUND CURRENT LEVEL")
                ret = re.findall('\d+', resp[i])
                if len(ret) > 0:
                    if int(ret[0]) != lvl:
                        return dire, mess, resp, int(ret[0])
            else:
                i += 1
    if incant is True:
        ret_incant, level = EmptyCacheIgnoreBroadcast(socket, lvl)
        if (level != lvl):
            return dire, mess, resp, level
        for response in ret_incant:
            if "Current level:" in response:
                ret = re.findall('\d+', response)
                if len(ret) > 0:
                    if int(ret[0]) != lvl:
                        return dire, mess, resp, int(ret[0])
        return dire, mess, resp, lvl
    print("FOCUSBROADCAST resp = " + str(resp) + " mess = " + str(mess) + " dire = " + str(dire))
    return dire, mess, resp, lvl
Example #11
0
def IsThereItem(socket, requested_item, lvl):
    socket.Look()
    resp, level = EmptyCacheIgnoreBroadcast(socket, lvl)
    if level != lvl:
        return -1, "None", level
    resp = resp[:1]
    if len(resp) > 0 and resp[0] != "ko":
        resp = resp[0][2:-2].split(',')
    for tile in range(len(resp)):
        content = resp[tile].split(' ')
        for item in content:
            for req_item in requested_item:
                if item in req_item.split(' '):
                    return tile, item, lvl
    for tile in range(len(resp)):
        content = resp[tile].split(' ')
        for item in content:
            if item == "food":
                return tile, item, lvl
    return -1, "None", lvl
Example #12
0
def get_all_item_here(socket, here, lvl):
    tile = here.split(' ')
    for item in tile:
        if (item != 'player'):
            socket.Take(item)
            EmptyCacheIgnoreBroadcast(socket, lvl)