def i_meet_you(): """ Fonction qui est appelée si le visage détecté n'est pas reconnu. Cette fonction va enregistrer le nom de la personne puis son visage :return: Renvoie le nom du visage enregistré si tout se passe bien, renvoie une chaine vide si il y a une erreure """ # Veux-tu enregistrer ton visage ? response = Dg.Creer(Dg.Demande, Dg.DicoVide, 51) Sm.speech_and_move(u"{}".format(response.out())) negative_answers = Nkr.nao_key_word_recognition("non", "pas", "nan", "annulation") # On a trouvé un mot clé négatif if negative_answers != "": Sm.speech_and_move(u"Annulation de l'enregistrement") return "" mots_utiles = Dg.Creer(Dg.MotsUtiles, Dg.DicoVide, 6, 7) demande = Dg.Creer(Dg.Demande, Dg.DicoVide, 20, 21, 22) Sm.speech_and_move(u'{} {}'.format(mots_utiles.out(), demande.out())) success, name = get_name() if not success: # On re enregistre le visage de la personne if name == "re learning": Sm.speech_and_move( u"Désoler ! j'ai du male enregistré t-on visage! peut tu me re dire t-on prénoms ?" ) while not success: success, name = get_name() Sm.speech_and_move( u"Parfait ! maintenemps je vais re apprendre t-on visage! Attention !" ) sleep(1) Fr.relearn_face(name) Sm.speech_and_move(u"Voila j'ai re apris t-on visage.") # Annulation de l'enregistrement return name else: return "" # content de te connaitre je vais enregistrer ton visage et instruction a faire if True: confimation = Dg.Creer(Dg.Confirmation, Dg.DicoVide, 49, 50) Sm.speech_and_move(u'{} {}'.format(confimation.out(), name)) waitfor() Fr.add_face(name) confimation = Dg.Creer(Dg.Confirmation, Dg.DicoVide, 75, 76) # Je t'ai bien enregistré ! Sm.speech_and_move(u'{}'.format(confimation.out())) return name
def script(s, player=None): from NaoQuest.objective import Objective from NaoSensor.plant import Plant import NaoCreator.SGBDDialogue.creer as bd import NaoCreator.Tool.speech_move as sm if not player: print("Error in execution of post_script \"testobj1_post\": player is None") return if not s.completed: p1 = bd.Creer(bd.Instruction, bd.DicoVide, 30) p2 = bd.Creer(bd.Instruction, bd.DicoVide, 31) p3 = bd.Creer(bd.Instruction, bd.DicoVide, 32) p4 = bd.Creer(bd.Instruction, bd.DicoVide, 33) sm.speech_and_move(p1.out() + p2.out() + p3.out() + p4.out())
def script(s, player=None): from NaoQuest.objective import Objective from NaoCreator.setting import Setting from NaoCreator.Tool.speech_move import speech_and_move import NaoCreator.SGBDDialogue.creer as C if not player: Setting.error("Error in execution of post_script of objective \"ValidationRemplirTerre\": player is None") return if not s.completed: # on recupaire le position de l'objectif courent dans la list index_curent_obj = player.current_quest.objectives.index(s) # on mais l'onjectif présédent comme non valider pour que nao reise les instruction player.current_quest.objectives[index_curent_obj - 1].completed = False p1 = C.Creer(C.Reponse, 41, 42, 43, 44) speech_and_move(u"{}".format(p1.out())) else: p1 = C.Creer(C.Reponse, 37, 38, 39, 40) speech_and_move(u"{}".format(p1.out()))
def menu(player_name): """ Menu principal :param player_name: nom du joueur courant :return: """ admin_key_word = ["admin", "administrateur", "administration"] quest_start_key_word = ["apprentissage", "quête", "formation", "mission"] end_key_word = ["fin", "fini", "arret", "stop"] # que veux-tu de moi text1 = Dg.Creer(Dg.Demande, Dg.DicoVide, 7, 8) Sm.speech_and_move(u"{}.".format(text1.out())) # Menu while True: res = Nkr.nao_key_word_recognition(*admin_key_word + quest_start_key_word + end_key_word) # Commande secrete if res in admin_key_word: admin(player_name) Setting.naoPosture.goToPosture("Stand", 1.0) # Il veut faire ses quêtes elif res in quest_start_key_word: # On démarre les quêtes super start_quest_mode(player_name) # si on veut quitter elif res in end_key_word: break # Si la personne se trompe else: Sm.speech_and_move(u"Dommage je n'ai pas compris ce que tu a dis, peux-tu répéter ?") waitfor() # que ve tu de moi text1 = Dg.Creer(Dg.Demande, Dg.DicoVide, 7, 8) Sm.speech_and_move(u"{}.".format(text1.out())) Sm.speech_and_move(u"Dommage tu vas me manquer! C'est pas grave à plus. Bisous")
def i_know_you_local(face_name): """ Fonction appelée par nao creator quand nao connait la personne :param face_name: nom de la personne :return: """ # bonjour prenom text1 = Dg.Creer(Dg.MotsUtiles, {"prenom": face_name}, 8, 37) Sm.speech_and_move(u"{}".format(text1.out())) # on regarde si le joueur n'existe pas déja dans les fichier # menu(face_name) start_quest_mode(face_name)
def script(s, player=None): from NaoQuest.objective import Objective from NaoSensor.plant import Plant import NaoCreator.SGBDDialogue.creer as bd import NaoCreator.Tool.speech_move as sm if not player: print("Error in execution of post_script \"testobj1_post\": player is None") return if not s.completed: p1 = bd.Creer(bd.Instruction, bd.DicoVide, 34, 35, 36) sm.speech_and_move(p1.out()) sm.speech_and_move(u"Pour cette plante, tu dois : {}".format(player.current_quest.plante_lie.get_data(Plant.PLANTATION)["arroser"]))
def get_name(): """ Fonction qui obtient le nom de la personne. :return: Elle renvoie un couple (booleen, string) True et le nom si tout s'est bien passé False et un code d'erreur sinon """ keyout = "non" name = "" while keyout != "" and Setting.naoMemoryProxy.getData( "MiddleTactilTouched") != 1: try: name = Nl.nao_listen().decode("utf-8") # gestion des cas spéciaux if name == "": if Setting.DEBUG: print "erreur sur NaoListen" return False, "erreur" elif "annuler" in name: if Setting.DEBUG: print "annulation" return False, "annulation" elif "tu me connais" in name: if Setting.DEBUG: print "re learning" return False, "re learning" Sm.speech_and_move( u"Le prénoms que tu ma dit est {} ".format(name)) demande = Dg.Creer(Dg.Demande, Dg.DicoVide, 23) Sm.speech_and_move(u'{}'.format(demande.out())) # Si on a mal enregistré on le fait répéter keyout = Nkr.nao_key_word_recognition("non", "tu l'a mal dit") if keyout != "": Sm.speech_and_move(u"Désoler, peut tu me redire t-on prénom ?") except Exception as e: print e raise e return True, name
def admin(face_name): """ Petite fonction secrète pour donner des ordres à Nao :param face_name: nom du visage devant nao :return: """ Sm.speech_and_move(u"Mots de passe".format(face_name)) password = Nkr.nao_key_word_recognition("cancer") # bon mots de passe if password != "": Sm.speech_and_move(u"Bienvenu maitre {}! Attention il me faut de la place pour mes mouvements." u"Pour arrêter dit moi fini ou fin. Quand je fini une action appuie sur ma tête" u"Dis moi ce que tu veux " .format(face_name)) posture_key_word = {"assis":"Sit", "debout":"Stand", "coucher":"LyingBack", "couché":"LyingBack", "ventre":"LyingBelly", "pause":"SitRelax", "méditer":"Crouch", "méditation":"Crouch"} end_key_word = ["fin", "fini", "arret", "stop"] desactive_traker() while True: try: res = Nkr.nao_key_word_recognition(*posture_key_word.keys() + end_key_word) if res in posture_key_word: Setting.naoPosture.goToPosture(posture_key_word[res], 1.0) elif res in end_key_word: Sm.speech_and_move(u"Fin de la session admin !") break waitfor() # que veux-tu de moi text1 = Dg.Creer(Dg.Demande, Dg.DicoVide, 7, 8) Sm.speech_and_move(u"{}".format(text1.out())) except Exception as e: print("Erreur: ", e) active_traker() else: Sm.speech_and_move(u"Mots de passe incorrect. Auto destruction amorcée")