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
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()
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'
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
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é
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: