def test_remote4():
    # Connexion au server
    server = "http://localhost:8080"
    groupe_id = "Binôme de projet 3615"  # votre vrai numéro de groupe
    names = "Khaled et Sylvain"  # vos prénoms et noms

    try:
        wwr = WumpusWorldRemote(server, groupe_id, names)
        # version pour avoir les logs de requêtes
        # wwr = WumpusWorldRemote(server, groupe_id, names, log=True)
    except HTTPError as e:
        print(e)
        print("Try to close the server (Ctrl-C in terminal) and restart it")
        return

    # Création du labyrinthe
    status, msg, size = wwr.next_maze()
    maze = 1

    while status == "[OK]":
        print(wwr.get_status())
        pprint(wwr.get_gold_infos())

        if maze == 1:
            treat_map_1(wwr)
        else:
            treat_map_gen(wwr)

        status, msg, size = wwr.next_maze()
        maze += 1
        print(status, msg, size)
def treat_map_1(wwr: WumpusWorldRemote):
    size = wwr.current_size

    # Cartographie (phase 1)
    res = wwr.know_wumpus(1, 3)
    print(res)

    res = wwr.know_pit(0, 3)
    print(res)

    for i in range(size):
        for j in range(size):
            if (i, j) in [(1, 3), (0, 3)]:
                continue

            if random.choice([True, False]):
                res = wwr.cautious_probe(i, j)
            else:
                res = wwr.probe(i, j)
            print(res)

    status, msg = wwr.end_map()
    print(msg)
    pprint(wwr.get_gold_infos())

    # Récupération de l'or ! (phase 2)
    path = [(0, 1), (1, 1), (1, 0), (0, 0)]

    for i, j in path:
        res = wwr.go_to(i, j)
        print(res)

    print(wwr.get_status())

    print(wwr.get_status())
    res = wwr.maze_completed()
    print(res)
def treat_map_gen(wwr: WumpusWorldRemote):
    size = wwr.current_size

    for i in range(size):
        for j in range(size):
            if random.choice([True, False]):
                res = wwr.cautious_probe(i, j)
            else:
                res = wwr.probe(i, j)
            print(res)

    status, msg = wwr.end_map()
    print(msg)
    pprint(wwr.get_gold_infos())

    print(wwr.get_status())

    res = wwr.maze_completed()

    print(res)
Exemple #4
0
def test_remote():
    # Connexion au server
    server = "http://localhost:8080"
    groupe_id = "Binôme de projet 3615"  # votre vrai numéro de groupe
    names = "Khaled et Sylvain"  # vos prénoms et noms

    try:
        wwr = WumpusWorldRemote(server, groupe_id, names)
    except HTTPError as e:
        print(e)
        print("Try to close the server (Ctrl-C in terminal) and restart it")
        return

    # Récupération du premier labyrinthe
    status, msg, size = wwr.next_maze()
    while status == "[OK]":
        print(msg)
        print("taille: ", size)

        ###################
        ##### PHASE 1 #####
        ###################

        status, percepts, cost = wwr.probe(0, 0)
        print(status, percepts, cost)

        # Toutes les cases doivent être connues pour finir la phase 1
        # Ci-après une méthode très couteuse pour arriver à ce résultat
        for i in range(size):
            for j in range(size):
                status, percepts, cost = wwr.cautious_probe(i, j)
                print(status, percepts, cost)

        # Il est possible, si vous l'avez déduit, de dire que vous savez ou est un puit où le Wumpus
        # Attention, en cas d'erreur, le jeu s'arrête !
        #
        # statut, msg = wwr.know_wumpus(1, 3)
        # print(statut, msg)
        # statut, msg = wwr.know_pit(0, 3)
        # print(statut, msg)

        phase, pos = wwr.get_status()
        print("status:", phase, pos)

        # La carte doit être entièrement parcourue avant de passer à la phase 2!
        status, msg = wwr.end_map()
        print(status, msg)

        ###################
        ##### PHASE 2 #####
        ###################

        phase, pos = wwr.get_status()
        print("status:", phase, pos)
        i, j = wwr.get_position()
        print(f"Vous êtes en ({i},{j})")

        status, msg, cost = wwr.go_to(0, 0)
        print(msg)

        status, msg, cost = wwr.go_to(0, 1)
        print(msg)

        status, msg, cost = wwr.go_to(0, 2)
        print(msg)

        if status == "[KO]":
            print("t'es mort !")
            print("press enter for the next maze !!")
            input()
            status, msg, size = wwr.next_maze()
            continue

        status, msg, cost = wwr.go_to(1, 2)
        print(msg)

        status, msg, cost = wwr.go_to(2, 2)
        print(msg)

        status, msg, cost = wwr.go_to(1, 2)
        print(msg)

        status, msg, cost = wwr.go_to(2, 2)
        print(msg)

        status, msg, cost = wwr.go_to(1, 2)
        print(msg)

        status, msg, cost = wwr.go_to(0, 2)
        print(msg)

        status, msg, cost = wwr.go_to(0, 1)
        print(msg)

        status, msg, cost = wwr.go_to(0, 0)
        print(msg)

        i, j = wwr.get_position()
        print(f"Vous êtes en ({i},{j})")

        # Vous devez être en (0,0) ou mort pour avoir le droit d'appeler maze_completed
        res = wwr.maze_completed()
        print(res)

        phase, pos = wwr.get_status()
        print("status:", phase, pos)

        print("press enter for the next maze !!")
        input()

        status, msg, size = wwr.next_maze()
def test_remote2():
    # Connexion au server
    server = "http://localhost:8080"
    groupe_id = "Binôme de projet 3615"  # votre vrai numéro de groupe
    names = "Khaled et Sylvain"  # vos prénoms et noms

    try:
        wwr = WumpusWorldRemote(server, groupe_id, names)
    except HTTPError as e:
        print(e)
        print("Try to close the server (Ctrl-C in terminal) and restart it")
        return

    # Récupération du premier labyrinthe
    status, msg, size = wwr.next_maze()
    while status == "[OK]":
        print(msg)
        print("taille: ", size)

        ###################
        ##### PHASE 1 #####
        ###################

        status, percepts, cost = wwr.probe(0, 0)
        print(status, percepts, cost)

        status, percepts, cost = wwr.probe(0, 0)
        print(status, percepts, cost)

        # Toutes les cases doivent être connues pour finir la phase 1
        # Ci-après une méthode très couteuse pour arriver à ce résultat
        for i in range(size):
            for j in range(size):
                status, percepts, cost = wwr.cautious_probe(i, j)
                print(status, percepts, cost)

                gold = wwr.get_gold_infos()
                print(gold)

        status, msg = wwr.end_map()
        print(status, msg)

        ###################
        ##### PHASE 2 #####
        ###################

        phase, pos = wwr.get_status()
        print("status:", phase, pos)
        i, j = wwr.get_position()
        print(f"Vous êtes en ({i},{j})")

        for i, j in [
            (0, 1),
            (0, 2),
            (1, 2),
            (2, 2),
            (1, 2),
            (0, 2),
            (0, 1),
            (0, 2),
            (1, 2),
            (2, 2),
            (1, 2),
            (0, 2),
            (0, 1),
            (0, 0),
        ]:
            status, msg, cost = wwr.go_to(i, j)
            print(msg)

            gold = wwr.get_gold_infos()
            print(gold)

        res = wwr.maze_completed()
        print(res)

        phase, pos = wwr.get_status()
        print("status:", phase, pos)

        print("press enter for the next maze !!")
        input()

        status, msg, size = wwr.next_maze()
def test_remote3():
    # Connexion au server
    server = "http://localhost:8080"
    groupe_id = "Binôme de projet 3615"  # votre vrai numéro de groupe
    names = "Khaled et Sylvain"  # vos prénoms et noms

    try:
        wwr = WumpusWorldRemote(server, groupe_id, names)
        # version pour avoir les logs de requêtes
        # wwr = WumpusWorldRemote(server, groupe_id, names, log=True)
    except HTTPError as e:
        print(e)
        print("Try to close the server (Ctrl-C in terminal) and restart it")
        return

    # Création du labyrinthe
    status, msg, size = wwr.next_maze()
    print(wwr.get_status())
    pprint(wwr.get_gold_infos())

    # Cartographie
    res = wwr.know_wumpus(1, 3)
    print(res)

    res = wwr.know_pit(2, 1)
    print(res)

    for i in range(size):
        for j in range(size):
            if (i, j) in [(1, 3), (2, 1)]:
                continue
            res = wwr.probe(i, j)
            print(res)

    status, msg = wwr.end_map()
    print(msg)
    pprint(wwr.get_gold_infos())

    # Récupération de l'or !
    path = [(0, 1), (1, 1), (1, 2), (2, 2), (1, 2), (1, 1), (0, 1), (0, 0)]

    for i, j in path:
        res = wwr.go_to(i, j)
        print(res)

    print(wwr.get_status())

    res = wwr.maze_completed()
    print(res)
def cestpartit():

    # Connexion au server
    server = "http://localhost:8080"
    groupe_id = "Binôme de projet 41"  # votre vrai numéro de groupe
    names = "Théophane Durand et Félix Poullet-pages"  # vos prénoms et noms

    try:
        wwr = WumpusWorldRemote(server, groupe_id, names)
    except HTTPError as e:
        print(e)
        print("Try to close the server (Ctrl-C in terminal) and restart it")
        return

    status, msg, size = wwr.next_maze()

    nbMaze = 0

    while status == "[OK]":

        ###################
        ##### PHASE 1 #####
        ###################

        (gs, knowledge) = initialisation(size, wwr)
        cartographie(size, wwr, gs, knowledge)
        phase, pos = wwr.get_status()

        # La carte doit être entièrement parcourue avant de passer à la phase 2!
        status, msg = wwr.end_map()
        #print(status, msg)

        phase, pos = wwr.get_status()

        i, j = wwr.get_position()
        ###################
        ##### PHASE 2 #####
        ###################

        suc = [(0, 0)]
        largeur(size, knowledge, suc)

        terrain = [[1] * size for i in range(size)]
        for a, b in suc:
            terrain[a][b] = 0

        goldATrouver = []
        for a in range(size):
            for b in range(size):
                if ('G' in knowledge[a][b] and ((a, b) in suc)):
                    goldATrouver.append((a, b))
        #goldATrouver.append((0, 0))

        cheminTotal = []
        pos = wwr.get_position()

        for a, b in goldATrouver:
            #print("({}, {})".format(a, b))
            chemin = astar(terrain, pos, (a, b))
            pos = (a, b)
            for case in chemin[1:]:
                cheminTotal.append(case)
                if (case in goldATrouver):
                    goldATrouver.remove(case)

        chemin = astar(terrain, pos, (0, 0))
        for case in chemin[1:]:
            cheminTotal.append(case)

        #print(cheminTotal)
        for i, j in cheminTotal:
            res = wwr.go_to(i, j)
            #print(res)
        res = wwr.maze_completed()
        #print(res)

        phase, pos = wwr.get_status()

        nbMaze += 1
        print("{} Wumpus terminés".format(nbMaze))
        #input()

        status, msg, size = wwr.next_maze()