Exemple #1
0
def proposition_solution (proposition, code_s): 
	""" Fonction qui effectue un coup du joueur !
		comme la fontion proposer_solution, sans s'occuper des autres paramètres, tel que le score,
		les coups restant ... ne renvoie que (a,b)

		@proposition : [couleur (français) ...] = la proposition du joueur

		@return : (a,b)
			- (a,b) : a couleurs justes et bien placées, b couleurs justes et mal placées 
			
		@throw : TableauInvalide
	"""
	
	code = list (code_s)

	if len (proposition) != len (code):
		raise TableauInvalide ("Tailles différentes")
	
	def incrementeur (a,b):
		if b == True:
			return a + 1
		else:
			return a
	
	def supresseur (a,b):
		if b == True:
			return "*"
		else:
			return a
	

	eq = utils.bi_map (utils.egal, proposition, code)
	a  = utils.foldl (incrementeur, 0, eq)

	reste_proposition = utils.bi_map (supresseur, proposition, eq)
	
	# Ce code aussi peut devenir plus fonctionnel !
	b = 0
	for i in reste_proposition:
		k = 0
		while k < len (code):
			if i != "*" and code[k] != "*" and i == code[k]:
				b += 1
				code[k] = "*"
			k += 1

	return (a,b) #retourne a, le nombre de justes bien placées, et b le nombre de justes mal placées.
Exemple #2
0
def send(rep):
    """ Envoie une requête utilisateur au Mastermind
		qui va gérer la redirection et les actions 
		nécessaires
		
		@rep : str = la requête
		
		@return : str = l'état actuel 
	"""
    if rep == "help":  # Commande indépendante de l'état courant !
        afficher_aide()
    elif rep == "regles":  # Commande indépendante de l'état courant !
        afficher("Affichage des règles sur la fenêtre graphique ...")

        set_ecran("regles", 2)
    elif rep == "clear":
        iconsole.clear()
    elif rep == "scores":  # Commande indépendante de l'état courant !
        afficher("Affichage des scores sur la fenêtre graphique ...")

        set_ecran("scores", 1)

        s, n = scores.recup_score(), scores.recup_nom()

        liste = utils.bi_map(lambda a, b: (a, b), s, n)
        afficher_liste("Scores", liste)

    elif rep == "fortune":
        try:
            maximum = persistance.get_propriete("phrases", "max")
            maximum = int(maximum)
            aleatoire = randint(0, maximum - 1)
            afficher(persistance.get_propriete("phrases", str(aleatoire)))
        except persistance.CleInvalide:
            afficher("Il est impossible de récupérer la fortune ... le fichier « phrases » doit être corrompu »")
        except persistanec.FichierInvalide:
            afficher(
                "Le fichier est introuvable ... Cela implique un problème dans le CODE SOURCE ... revenez plus tard ..."
            )
        except ValueError:
            afficher("La valeur de « max » dans « phrases » est fausse et ne représente pas un nombre valide ...")
        except:
            afficher("Une erreur inconnue est survenue ... ")

    elif rep == "couleurs":
        afficher_couleurs()

    elif get_etat() == "Humain-Joue":
        humain_joue(rep)
    elif get_etat() == "Menu":
        menu(rep)
    elif get_etat() == "Menu-Partie":
        menu_partie(rep)
    elif get_etat() == "Theme":
        theme(rep)
    elif get_etat() == "Niveau":
        niveau(rep)
    elif get_etat() == "Proposer-Code":
        proposer_code(rep)
    elif get_etat() == "Definir-Code":
        definir_code(rep)
    else:
        raise ErreurFatale

    return get_etat()