def generateur_couleurs (tableau): """ Générateur qui dessine une à une les couleurs du tableau, avec leur nom à côté d'un carré de la-dite couleur @tableau : [couleur (fr) ...] = tableau des couleurs @return : generator """ for i in tableau: try: color (couleurs.string_to_hexa (i)) except: pass begin_fill () polygone (4,10) # Un Carré end_fill () fd (20) right (90) fd (5) texte (i, "petit") fd (-5) left (90) fd (-20) yield
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)