def enregistre_score (nom_du_joueur = "AAA"): """ Enregistre le score actuel dans le top 5 des scores s'il est superieur a un de ces derniers @return : None @throw : moteur.PasEnCoursDePartie persistance.CleInvalide persistance.FichierInvalide """ score_actuel = calcul_score () # Throw PasEnCoursDePartie si besoin ... top_score = recup_score () nom = recup_nom () i = 0 while i < 5: try: sc = int (top_score[i]) except ValueError: raise persistance.ValeurInvalide ("scores",str (i) + ":score") else: if score_actuel > int(top_score[i]): top_score.insert(i, str (score_actuel)) nom.insert(i, nom_du_joueur) break i = i + 1 i = 0 while i < 5: persistance.set_propriete ("scores",str(i)+":score",top_score[i]) persistance.set_propriete ("scores",str(i)+":nom",nom[i]) i = i + 1
def set_mode (m): """ Change le mode de jeu pour la PROCHAINE partie jouée @m : str (facile | moyen | difficile) = Le nouveau mode de jeu @return : None @throw : ModeInvalide persistance.FichierInvalide """ global restant if m in liste_mode: persistance.set_propriete ("config","niveau",m) else: raise ModeInvalide
def choix_theme (nbr_theme = 1): """ Sélectionne un thème (modifie le fichier de configuration) @nbr_theme : int = le numéro du nouveau thème sélectionné @return : None @throw : persistance.CleInvalide persistance.FichierInvalide ValueEror # si jamais il y a une valeur erronée dans backgrounds -> theme:max """ if not isinstance (nbr_theme, int): nbr_theme = 1 max_theme = persistance.get_propriete ("backgrounds","theme:max") if nbr_theme > int (max_theme): nbr_theme = 1 persistance.set_propriete ("backgrounds","theme:courant",str (nbr_theme))
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é !")