Пример #1
0
def auto_graph(idul):
    """
    Fonction qui permet de jouer en mode automatique contre le serveur avec une affichage graphique.
    """
    partie = api.débuter_partie(ARGUMENTS.idul.lower())
    idp = partie[0]
    jeu = qrx.QuoridorX([idul, "automate"])
    jeu.état = partie[1]
    jeu.afficher()
    while True:
        try:
            jeu.jouer_coup(1)
            jeu.afficher()
            jeu.état = api.jouer_coup(idp, jeu.type_coup, jeu.pos_coup)
            jeu.posj2 = (jeu.état['joueurs'][1]['pos'][0],
                         jeu.état['joueurs'][1]['pos'][1])
            jeu.posj2 = (jeu.état['joueurs'][1]['pos'][0],
                         jeu.état['joueurs'][1]['pos'][1])
            for i in jeu.état['murs']["horizontaux"]:
                jeu.murs['horizontaux'].append(i)
                jeu.murs['horizontaux'].append(i)
            for i in jeu.état['murs']["verticaux"]:
                jeu.murs['verticaux'].append(i)
                jeu.murs['verticaux'].append(i)
            jeu.afficher()
        except StopIteration as err:
            print(f"La partie est terminée, {err} est vainqueur!")
            break
Пример #2
0
def jeu_graphique_serveur(idul, automode=False):
    """jeu manuel affiché dans un interface graphique
    - Les coups sont entrés dans l'interface graphique
    - L'affichage se fait dans l'interface graphique
    Arguments:
        idul {str} -- L'identifiant du joueur
    """
    # débuter le jeu
    nouveaujeu = api.débuter_partie(idul)
    jeu = quoridorx.QuoridorX(nouveaujeu[1]['joueurs'])
    jeu.gameid = nouveaujeu[0]
    coup = []
    # boucler
    while True:
        # Obtenir le coup
        t = check_task(jeu, coup, automode)
        if t:
            try:
                coup = t
                # vérifier si le coup est valide
                if not verifier_validite(jeu, coup):
                    mb.showerror("Erreur!", "Coup invalide!")
                    continue
                jeu.afficher()
                nouveaujeu = api.jouer_coup(jeu.gameid, coup[0],
                                            (coup[1], coup[2]))
                jeu.joueurs = nouveaujeu['joueurs']
                jeu.murh = nouveaujeu['murs']['horizontaux']
                jeu.murv = nouveaujeu['murs']['verticaux']
                # Afficher le jeu
                jeu.afficher()
            except StopIteration as s:
                # prévenir le joueur que la partie est terminée
                mb.showinfo("Partie terminée!", f"Le joueur {s} à gagné!")
                return
        # Boucler et continuellement afficher
        jeu.root.update_idletasks()
        jeu.root.update()
Пример #3
0
                        action='store_true',
                        help='Activer le mode automatique.')
    parser.add_argument('-x',
                        '--graphique',
                        dest='graphique',
                        action='store_true',
                        help='Activer le mode graphique.')
    return parser.parse_args()


if __name__ == "__main__":
    ARGS = analyser_commande()
    ID_PARTIE = initialiser_partie(ARGS.idul)[0]
    GRILLE = initialiser_partie(ARGS.idul)[1]
    if ARGS.graphique:
        PARTIE = quoridorx.QuoridorX(GRILLE['joueurs'], GRILLE['murs'])
        PARTIE.automatique = ARGS.automatique
        PARTIE.id = ID_PARTIE
    else:
        PARTIE = quoridor.Quoridor(GRILLE['joueurs'], GRILLE['murs'])
    WIN = False
    while not WIN:
        PARTIE.afficher()
        if not ARGS.automatique:
            TYPE_COUP = input(
                "\nQuel type de coup voulez vous effectuer ?\n'D' pour déplacer le jeton,\
                \n'MH' pour placer un mur horizontal,\n'MV' pour placer un mur vertical.\nType: "
            )
            TYPE_COUP = TYPE_COUP.upper()
            if TYPE_COUP == '':
                TYPE_COUP = 'D'
Пример #4
0
def analyser_commande():
    '''Cette fonction permet de traiter la ligne de commande'''
    parser = argparse.ArgumentParser(description='Jeu Quoridor - phase 3')
    group = parser.add_mutually_exclusive_group()
    parser.add_argument(metavar='idul', dest='idul',
                        help='IDUL du joueur.')
    group.add_argument('-a', '--automatique', action='store_true', default=False, help='Activer le mode automatique.')
    group.add_argument('-x', '--graphique', action='store_true', default=False, help='Activer le mode graphique.')
    group.add_argument('-ax', '--graphique_automatique', action='store_true', default=False, help='Activer le mode automatique et graphique.')

    args = parser.parse_args()

    if args.automatique:
        idul = analyser_commande().idul
        dico = api.débuter_partie(idul)
        Id = dico['id']
        jeu = quoridor.Quoridor(dico)
        while quoridor.QuoridorError is False:
            jeu.jouer_coup(1)
            dico = api.jouer_coup(Id, type_de_coup, position)
        print(jeu)

    elif args.graphique:
        idul = analyser_commande().idul
        dico = api.débuter_partie(idul)
        jeu = quoridorx.QuoridorX(dico)
        Id = dico['id']
        i = True
        while i:
            coup = input("Choisir un coup (déplacement = D, mur horizontal = MH, mur vertical = MV) et presser la touche ⏎: ")
            if coup == 'D':
                position = input("Préciser la position (x, y) et presser la touche ⏎: ")
                dico = api.jouer_coup(Id, coup, position)
            elif coup == 'MH':
                position = input("Préciser la position (x, y) et presser la touche ⏎: ")
                dico = api.jouer_coup(Id, coup, position)
            elif coup == 'MV':
                position = input("Préciser la position (x, y) et presser la touche ⏎: ")
                dico = api.jouer_coup(Id, coup, position)
        jeu.afficher()

    elif args.graphique_automatique:
        idul = analyser_commande().idul
        dico = api.débuter_partie(idul)
        Id = dico['id']
        jeu = quoridorx.QuoridorX(dico)
        while quoridor.QuoridorError is False:
            jeu.jouer_coup(1)
            dico = api.jouer_coup(Id, type_de_coup, position)
        jeu.afficher()

    else:
        jeu = quoridor.Quoridor(dico)
        idul = analyser_commande().idul
        dico = api.débuter_partie(idul)
        Id = dico['id']
        i = True
        while i:
            coup = input("Choisir un coup (déplacement = D, mur horizontal = MH, mur vertical = MV) et presser la touche ⏎: ")
            if coup == 'D':
                position = input("Préciser la position (x, y) et presser la touche ⏎: ")
                dico = api.jouer_coup(Id, coup, position)
            elif coup == 'MH':
                position = input("Préciser la position (x, y) et presser la touche ⏎: ")
                dico = api.jouer_coup(Id, coup, position)
            elif coup == 'MV':
                position = input("Préciser la position (x, y) et presser la touche ⏎: ")
                dico = api.jouer_coup(Id, coup, position)
        print(jeu)

    return args.idul
Пример #5
0
    idul = analyser_commande().idul

    #Retourne True si -a présent, sinon False
    mode_auto = analyser_commande().automatique

    #Retourne True si -x présent, sinon False
    mode_graph = analyser_commande().graphique

    ###Initialise la partie
    #Envoyer un POST pour initialer la partie
    ID, partie_initial = initialiser_partie(idul)

    ##Crée l'objet de jeu avec la classe demandée
    #Si le mode graphique est actif, utiliser la classe quoridorx
    if mode_graph:
        partie = quoridorx.QuoridorX(partie_initial['joueurs'],
                                     partie_initial['murs'])

    #Si le mode graphique est inactif, utiliser la classe Quoridor

    else:
        partie = quoridor.Quoridor(partie_initial['joueurs'], None)

    #Afficher le damier selon la classe
    if mode_graph:
        partie.afficher()
    else:
        print(partie)

    ###Exécuter ce code tant qu'il n'y a pas de gagnant
    while not partie.partie_terminée():
        ##Le joueur 1 choisi son coup selon le mode spécifié
Пример #6
0
                        action='store_true',
                        help="Activer le mode graphique.")

    return parser.parse_args()


if __name__ == "__main__":
    COMMANDE = analyser_commande()

    if COMMANDE.lister:
        print(api.lister_parties(COMMANDE.idul))

    # Mode automatique avec graphique (commande : python main.py -ax idul)
    elif COMMANDE.automatique and COMMANDE.graphique:
        DEBUTER = api.débuter_partie(COMMANDE.idul)
        JEU = quoridorx.QuoridorX(DEBUTER[1]['joueurs'], DEBUTER[1]['murs'])
        ID_PARTIE = DEBUTER[0]

        JEU.afficher()

        GAGNANT = True
        while GAGNANT:
            try:
                COUP = JEU.jouer_coup(1)

                JOUER = api.jouer_coup(ID_PARTIE, COUP[0], COUP[1])
                JEU.liste_joueurs = JOUER['joueurs']
                JEU.liste_murs = JOUER['murs']

                JEU.afficher()
            except StopIteration as err: