def menu_partie(rep): if rep == "humain-joue": try: afficher("Le niveau actuel est : " + moteur.get_mode()) except moteur.PasEnCoursDePartie: afficher("Mmmh ... vous n'êtes pas en cours de partie ... il faut définir un code !") else: set_ecran("plateau", 5) set_etat("Humain-Joue") # Change d'état afficher_couleurs() elif rep == "abandon": set_etat("Menu") elif rep == "ia-joue": afficher("L'IA va jouer une partie") try: afficher("Le niveau actuel est : " + moteur.get_mode()) except moteur.PasEnCoursDePartie: afficher("Vous n'êtes pas en cours de partie ... il faut définir un code !") else: afficher_liste( "Les IAs sont", [("knuth", "Une IA très forte"), ("aleatoire", "Une ia ... mauvaise !"), ("matrice", "Une IA moyenne")], ) ia_mode = "" demander_ia = True while demander_ia == True: ia_mode = demander("Quelle IA") if ia_mode in ["matrice", "aleatoire", "knuth"]: demander_ia = False else: afficher("Ce mode d'IA est invalide !") afficher_couleurs() set_ecran("plateau", 3) for i in ia.jouer(ia_mode): primitives.aller_a(200, -200) chargement.animation(3, "cercle", 20) scores.enregistre_score(ia_mode) else: afficher("La requête n'est pas valide dans Menu-Partie ...")
def humain_joue(rep): """ Une fonction qui permet de faire jouer l'humain quand on est dans l'état « Humain-Joue » @rep : str = l'évènement à gérer @return : None @throw : LeProgrammeurEstCon ErreurFatale """ global tableau_tampon if get_etat() != "Humain-Joue": raise LeProgrammeurEstCon if rep == "abandon": # Abandon de la partie -> retour au menu afficher("Vous avez abandonné la partie ...") set_etat("Menu") elif rep == "score": try: afficher(scores.calcul_score()) except moteur.PasEnCoursDePartie: raise ErreurFatale elif rep == "plateau": afficher("Le plateau est affiché, vous pouvez proposer des solutions") try: moteur.reprendre_partie() except moteur.PasEnCoursDePartie: raise ErreurFatale set_ecran("plateau") elif rep == "historique": try: h = moteur.get_historique() except moteur.PasEnCoursDePartie: raise ErreurFatale else: def generateur_historique(hist): for i in hist: # i = [[a,b,c,d], (e,f)] coup = i[0] resultat = i[1] sa = "" if resultat[0] > 1: sa = "s" sb = "" if resultat[1] > 1: sb = "s" string = "{0} rouge{1}, {2} blanche{3}".format(resultat[0], sa, resultat[1], sb) yield (coup, string) afficher_liste("Historique", generateur_historique(h)) elif rep == "valider": afficher("Valide le nouveau code ...") if ecran != "plateau": set_ecran("plateau") try: r = moteur.verification_solution(tableau_tampon) except moteur.TableauInvalide as exception: afficher("Le tableau est invalide : {0}".format(exception.message)) else: if r == "gagne": afficher("Vous avez gagné !!!") nom = demander("Nom du joueur") try: scores.enregistre_score(nom) except moteur.PasEnCoursDePartie: raise ErreurFatale set_etat("Menu") elif r == "perdu": afficher("Vous avez perdu !!!") set_etat("Menu") else: a, b = r # On fait un joli affichage qui dit si on doit mettre un S ou pas ... sa = "" sb = "" if a > 1: sa = "s" if b > 1: sb = "s" messaga = "Il y a {0} bonne{1} couleur{1} bien placée{1}".format(a, sa) messagb = "Il y a {0} bonne{1} couleur{1} mal placée{1}".format(b, sb) tableau_tampon = [] iconsole.separateur() afficher(messaga) afficher(messagb) else: gestion_tableau(rep) # Gère l'ajout/suppression dans le tableau