Example #1
0
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
Example #2
0
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())
Example #3
0
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()))
Example #4
0
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")
Example #5
0
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)
Example #6
0
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"]))
Example #7
0
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
Example #8
0
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")