示例#1
0
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 ...")
示例#2
0
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