Example #1
0
def afficher(quelquechose, t=0):
    """ Une surcouche de iconsole.afficher 
		qui met automatiquement l'état courant 
		en « acteur »
		
		@quelquechose : str = un truc à afficher 
		@t : int = nombre de tabulations [opts]
		
		@return : None
	"""
    iconsole.afficher(get_etat(), quelquechose, t)
Example #2
0
def ia_alea ():
	# On fait pas dans la finesse ici 
	# Il faut plus de rafinement --"
	
	while True:
		prop = generer_couleurs_aleatoires ()
		try:
			r = moteur.verification_solution (prop)
		except moteur.TableauInvalide as t:
			iconsole.afficher ("IA", "Erreur ... " + t.message)
		else:
			if r == "gagne" or r == "perdu":
				raise StopIteration
			else:
				yield
Example #3
0
def ia_knuth ():
	univers = couleurs.liste_couleurs (moteur.get_nombre_couleurs ())

	li = create_list (univers) # Crée la liste de toutes les possibilités 
	

	while True: # On boucle ! Youhou ...
		yield
		try:
			proposition = choice (li) # On propose un truc de la liste 
			li.remove (proposition) # Retire la proposition de la liste 
		except:
			iconsole.afficher ("IA","Le code utilise FORCÉMENT des couleurs qui ne sont pas disonibles ...")

		try:
			reponse = moteur.verification_solution (proposition) # Et récupère la réponse du moteur 
			iconsole.afficher ("IA","Joue {0} -> {1}".format (proposition,reponse))
			
			if reponse == "gagne" or reponse == "perdu":
				raise StopIteration
			else:
				nli = []
				for i in li:
					reponse_tmp = moteur.proposition_solution (proposition, i)
					if reponse_tmp == reponse:
						nli.append (i)
				li = nli
		except moteur.TableauInvalide as t:
			iconsole.afficher ("IA", "Erreur ... " + t.message)
Example #4
0
    # 	-c IA | Joueur # qui code
    # 	-j IA | Joueur # qui joue
    # (j dépend de c, mais pas réciproquement)
    #   --console # entièrement en console
    #   --graphique # entièrement graphique

    parser = argparse.ArgumentParser("pymastermind")
    parser.add_argument("-d")  # Mauvais ....
    args = parser.parse_args()
    # print (args)

    ## fin arguments en ligne de commande

    iconsole.init()  # Initialise le module iconsole

    iconsole.afficher("Programme", "Bienvenue dans le mastermind !")
    sleep(1)

    # Initialisations des modules dans le bon ordre !
    persistance.init()
    iconsole.afficher("Chargement", "Charge la persistance ...")
    sleep(random())

    couleurs.init()
    iconsole.afficher("Chargement", "Charge les couleurs ...")
    sleep(random())

    primitives.init()
    affichage.init()
    iconsole.afficher("Chargement", "Initialise l'affichage ...")
    sleep(random())
def gen_fsm ():
	""" Crée la FSM ... c'est toute la fonction la plus importante """
	
	# Variables de la FSM
	fichier = ""
	st = "menu-fichier"

	
	while True:

		# Là est toute la magnificience 
		# on rend la main avec l'état actuel (comme ça les gens peuvent
		# savoir où on est) 
		# mais la prochaine exécution ... demande une action à faire
		# (et comme la boucle est infinie ... on revient toujours attendre 
		# à ce point exact de la boucle :-P.
		req = (yield st) # on sauve dans une variable 
		
		if st == "menu-fichier": # Si on est dans le menu-fichier les commandes sont 
			if req == "list":
				# On affiche la liste des fichiers 
				# disponnibles 
				iconsole.afficher (st, persistance.liste_fichiers ())
			elif req == "entrer":
				# Yop, on transite vers l'état menu-variable
				# SI ET SEULEMENT SI l'utilisateur 
				# a sélectionné un fichier !!!
				if fichier != "":
					st = "menu-variable"
				else:
					iconsole.afficher (st,"Vous n'avez pas sélectionné un fichier ...")
			elif req == "help":
				# L'aide affiche la liste des commandes possibles 
				iconsole.afficher (st, "Les commandes sont : « quit », « list », « entrer », « help » et @Fichier")
			else: # C'est un nom de fichier 
				# On suppose que si ce n'est pas une commande, 
				# c'est un nom de fichier, et on change donc 
				# le fichier sélectionné
				fichier = req
				iconsole.afficher (st,"Vous avez sélectionné " + req)
				
		else: # il n'existe que deux états, celui là est donc menu-variable
			# On a forcément définit un fichier,
			# vu que l'on ne peut être arrivé à cet état 
			# QUE par une transition !
			if req == "list":
				# On affiche simplement la liste des variables disponnibles 
				iconsole.afficher (st, persistance.liste_variables (fichier))
			elif req == "up":
				# On retourne au menu fichier ... tout con 
				st = "menu-fichier"
			elif req == "ou":
				# On dit à l'utilisateur où il se trouve, c'est à dire le fichier courant 
				iconsole.afficher (st, "Le fichier courant est : "+ fichier)
			elif req == "help":
				# On affiche la liste des commandes disponnibles 
				iconsole.afficher (st, "Les commandes sont : « quit », « ou », « list », « help », « up » et @Variable")
			else: # C'est une variable 
				# On suppose que si ce n'est pas une commande c'est une variable 
				# à modifier ... Donc on demande la nouvelle valeur 
				# et on modifie ... 
				try:
					iconsole.afficher (st, "Valeur actuelle : " + str (persistance.get_propriete (fichier,req)))
				except:
					iconsole.afficher (st, "Nouvelle variable !")
				val = iconsole.demander (st,"Nouvelle valeur")
				persistance.set_propriete (fichier,req,val)
				iconsole.afficher (st,"Bien modifié !")