def verification_solution (proposition): """ Fonction qui effectue un coup du joueur ! Si le coup est invalide, on n'enlève pas de vie ni ne diminue le score ! @proposition : [couleur (français) ...] = la proposition du joueur @return : "gagne" | "perdu" | (a,b) - "gagne" : l'utilisateur a gagné la partie - "perdu" : l'utilisateur a perdu la partie - (a,b) : a couleurs justes et bien placées, b couleurs justes et mal placées @throw : TableauInvalide (msg) PasEnCoursDePartie """ global restant if est_en_partie () != True: raise PasEnCoursDePartie if len (proposition) != 4: raise TableauInvalide ("Pas le bon nombre de couleurs") univers = couleurs.liste_couleurs()[0:get_nombre_couleurs ()] for i in proposition: if i not in univers: raise TableauInvalide ("La couleur {0} n'est pas bonne".format (i)) reponse = proposition_solution (proposition,code_secret) a,b = reponse historique.append([ list (proposition) , reponse]) restant -= 1 l = [] for i in proposition: # alala, c'est trop con sinon l.append (couleurs.string_to_hexa (i)) # Affiche la proposition à l'écran affichage.afficher_couleurs (4,l,reponse) if a == 4: #si proposition est identique à solution score = scores.calcul_score() affichage.win (score) en_cours_de_partie = False return "gagne" elif restant <= 0: #si le nombre de coups restants est de 0 affichage.loose (list(code_secret)) en_cours_de_partie = False return "perdu" else: return reponse #retourne a, le nombre de justes bien placées, et b le nombre de justes mal placées.
def proposer_solution (proposition): global restant # couleurs.is_string (c) # il faut verifier que la couleur est valide a = 0 b = 0 i = 0 solution = list (code_secret) while i < len (code_secret): if solution[i] == proposition[i]: a = a+1 solution[i] = "*" i = i+1 i = 0 while i < len (code_secret): j = 0 while j < len (solution): if solution[j] != "*" and solution[j] == proposition[i]: b = b+1 solution[j] = "*" break j = j + 1 i = i+1 restant -= 1 if a == 4: affichage.win ("red") return "gagne" elif restant == 0: affichage.perdu () return "perdu" else: l = [] for i in proposition: l.append (couleurs.string_to_hexa (i)) affichage.afficher_couleurs (4,l,(a,b)) return (a,b)
def reprendre_partie (): """ Réaffiche le plateau et les coups joués précédement dans la partie sur l'écran Turtle @return : None @throw : PasEnCoursDePartie """ global historique if est_en_partie () != True: raise PasEnCoursDePartie affichage.plateau () # Remet l'affichage du plateau for coup in historique: couleurs_hexa = [] for couleurplacee in coup[0]: # alala, c'est trop con sinon couleurs_hexa.append (couleurs.couleur_to_hexa (couleurplacee)) affichage.afficher_couleurs (4,couleurs_hexa,coup[1])