def give_instructions(self, event):
        # TODO event not used, separator not used, local var separtor not used
        """ pick how many objects in total will be described.  for last object change separator from "," to "and".
         pick object.  build up message update counter.  pick object to ask the question.

        :param event:
        :return:
        """
        separator = ""
        counter = {}
        partial_message = ""
        total = random.randint(1, max_total)
        for i in range(0, total):
            if i == total - 2:
                separator = " and "
            elif i == total - 1:
                separator = ""
            else:
                separator = ", "
            obj = vocabulary[random.randint(1, vocab_size - 1)]
            partial_message += msg.indef_article(obj)
            partial_message += separator
            if obj not in counter:
                counter[obj] = 0
            counter[obj] += 1
        object_in_question = vocabulary[random.randint(1, vocab_size - 1)]
        # TODO def outside __init__ .answer, .give_away_message
        self.answer = msg.numbers_in_words[counter.get(object_in_question, 0)]
        self.give_away_message = 'Wrong. The right answer is: {answer}.'.format(
            answer=self.answer)
        self.set_message(
            "I have {listing_objects}. How many {object} do I have? ".format(
                listing_objects=partial_message,
                object=msg.pluralize(object_in_question, 2)))
Esempio n. 2
0
    def on_start(self, event):
        # TODO event not used, target_obj def outside __inti__
        """

        :param event:
        :return:
        """
        self.target_obj, = random.sample(objects, 1)
        self.set_message("How many {0} do you have?".format(msg.pluralize(self.target_obj, 2)))
Esempio n. 3
0
 def on_gave_me_target_object(self, event):
     if self.stage == 'waiting-give-back':
         self.time_gave_me_object = self.get_time()
         self.set_message(
             "Good! You gave me {indef_object}. "
             "How many {objects} do you have now?".format(
                 indef_object=msg.indef_article(self.state.target_obj),
                 objects=msg.pluralize(self.state.target_obj, 2)))
     self.stage = 'final-query'
 def on_gave_me_target_object(self, event):
     if self.stage == 'waiting-give-back':
         self.time_gave_me_object = self.get_time()
         self.set_message(
             "Good! You gave me {indef_object}. "
             "How many {objects} do you have now?".format(
                 indef_object=msg.indef_article(self.state.target_obj),
                 objects=msg.pluralize(self.state.target_obj, 2)))
     self.stage = 'final-query'
    def on_start(self, event):
        self.failed = False
        self.time_gave_me_object = None
        self.state.target_obj, = random.sample(objects, 1)
        self.state.initial_count = \
            self.get_world().state.learner_inventory[self.state.target_obj]

        self.set_message("How many {0} do you have?".format(
                         msg.pluralize(self.state.target_obj, 2)))
        self.stages = ['initial-query', 'one-more-query', 'waiting-give-back',
                       'final-query']
        self.stage = 'initial-query'
Esempio n. 6
0
    def on_gave_me_target_object(self, event):
        # TODO event not used, time_gave_me_oject, stage def outside __init__
        """ if I have one more of the target object, the learner solved the task if it also picked up the object in
        the grid.

        :param event:
        :return:
        """
        if self.stage == 'waiting-give-back':
            self.time_gave_me_object = self.get_time()
            self.set_message("Good! You gave me {indef_object}. " "How many {objects} do you have now?".format(
                    indef_object = msg.indef_article(self.state.target_obj),
                    objects = msg.pluralize(self.state.target_obj,                                                                                                2)))
        self.stage = 'final-query'
Esempio n. 7
0
    def on_start(self, event):
        # TODO event not used, failed, time_gave_me_object, stage, def outside __inti__
        """

        :param event:
        :return:
        """
        self.failed = False
        self.time_gave_me_object = None
        self.state.target_obj, = random.sample(objects, 1)
        self.state.initial_count =  self.get_world().state.learner_inventory[self.state.target_obj]
        self.set_message("How many {0} do you have?".format(msg.pluralize(self.state.target_obj, 2)))
        self.stages = ['initial-query', 'one-more-query', 'waiting-give-back', 'final-query']
        self.stage = 'initial-query'
Esempio n. 8
0
    def on_start(self, event):
        self.failed = False
        self.time_gave_me_object = None
        self.state.target_obj, = random.sample(objects, 1)
        self.state.initial_count = \
            self.get_world().state.learner_inventory[self.state.target_obj]

        self.set_message("How many {0} do you have?".format(
            msg.pluralize(self.state.target_obj, 2)))
        self.stages = [
            'initial-query', 'one-more-query', 'waiting-give-back',
            'final-query'
        ]
        self.stage = 'initial-query'
Esempio n. 9
0
    def on_something_said(self, event):
        """ find out the correct answer.  get the answer of the learner and parse it

        :param event:
        :return:
        """
        count = self.get_world().state.learner_inventory[self.target_obj]
        answer = event.get_match(1)
        num_answer = msg.string_to_number(answer)
        if num_answer == count:
            self.set_reward(1, "Correct!")
        else:
            self.set_message("{negative_feedback} " "You have {count} {objects}.".format(
                    negative_feedback = random.choice(msg.failed), count = count, objects =
                    msg.pluralize(self.target_obj, count)))
 def on_something_said(self, event):
     # find out the correct answer
     count = self.get_world().state.learner_inventory[self.target_obj]
     # get the answer of the learner and parse it
     answer = event.get_match(1)
     num_answer = msg.string_to_number(answer)
     if num_answer == count:
         self.set_result(1, "Correct!")
     else:
         self.set_message("{negative_feedback} "
                          "You have {count} {objects}.".format(
                              negative_feedback=random.choice(msg.failed),
                              count=count,
                              objects=msg.pluralize(self.target_obj,
                                                    count)))
Esempio n. 11
0
 def on_answer_query(self, event):
     # if we are waiting for an object, then we don't expect an answer
     # to a query
     if self.stage == 'waiting-give-back':
         return
     # if you just gave me an object, then this is not the
     # answer for a query
     if self.time_gave_me_object == self.get_time():
         return
     # short variable for the world state
     ws = self.get_world().state
     # we check if the learner's answer matches the number of instances
     # it has of the given object
     count = ws.learner_inventory[self.state.target_obj]
     # get the answer of the learner and parse it
     answer = event.get_match(1)
     try:
         num_answer = msg.string_to_number(answer)
     except ValueError:
         num_answer = None
     # check if the learner has failed
     self.failed = self.failed or num_answer != count
     # get a feedback response
     feedback = random.choice(msg.congratulations) if num_answer == count \
                 else random.choice(msg.failed)
     if self.stage == 'initial-query':
         ws.learner_inventory[self.state.target_obj] += 1
         self.set_message(
             "{feedback} I gave you {indef_object}. "
             "How many {objects} do you have now?".format(
                 indef_object=msg.indef_article(self.state.target_obj),
                 objects=msg.pluralize(self.state.target_obj, 2),
                 feedback=feedback))
         self.stage = 'one-more-query'
     elif self.stage == 'one-more-query':
         self.set_message(
             "{feedback} Now give the {object} back to me.".format(
                 object=self.state.target_obj, feedback=feedback))
         ws.teacher_accepts.add(self.state.target_obj)
         self.stage = 'waiting-give-back'
     elif self.stage == 'final-query':
         # reward the learner if it replied correctly all the questions
         if not self.failed:
             self.set_reward(1, feedback)
         else:
             self.set_reward(0, feedback)
 def on_answer_query(self, event):
     # if we are waiting for an object, then we don't expect an answer
     # to a query
     if self.stage == 'waiting-give-back':
         return
     # if you just gave me an object, then this is not the
     # answer for a query
     if self.time_gave_me_object == self.get_time():
         return
     # short variable for the world state
     ws = self.get_world().state
     # we check if the learner's answer matches the number of instances
     # it has of the given object
     count = ws.learner_inventory[self.state.target_obj]
     # get the answer of the learner and parse it
     answer = event.get_match(1)
     try:
         num_answer = msg.string_to_number(answer)
     except ValueError:
         num_answer = None
     # check if the learner has failed
     self.failed = self.failed or num_answer != count
     # get a feedback response
     feedback = random.choice(msg.congratulations) if num_answer == count \
                 else random.choice(msg.failed)
     if self.stage == 'initial-query':
         ws.learner_inventory[self.state.target_obj] += 1
         self.set_message(
             "{feedback} I gave you {indef_object}. "
             "How many {objects} do you have now?".format(
                 indef_object=msg.indef_article(self.state.target_obj),
                 objects=msg.pluralize(self.state.target_obj, 2),
                 feedback=feedback))
         self.stage = 'one-more-query'
     elif self.stage == 'one-more-query':
         self.set_message("{feedback} Now give the {object} back to me."
                          .format(object=self.state.target_obj,
                                  feedback=feedback))
         ws.teacher_accepts.add(self.state.target_obj)
         self.stage = 'waiting-give-back'
     elif self.stage == 'final-query':
         # reward the learner if it replied correctly all the questions
         if not self.failed:
             self.set_result(1, feedback)
         else:
             self.set_result(0, feedback)
    def give_instructions(self, event):

        separator = ""
        counter = {}
        partial_message = ""

        # pick how many objects in total will be described
        total = random.randint(1, max_total)

        for i in range(0, total):
            # for last object change separator from "," to "and"
            if i == total - 2:
                separator = " and "
            elif i == total - 1:
                separator = ""
            else:
                separator = ", "

            # pick object
            obj = vocabulary[random.randint(1, vocab_size - 1)]

            # build up message
            partial_message += msg.indef_article(obj)
            partial_message += separator

            # update counter
            if obj not in counter:
                counter[obj] = 0
            counter[obj] += 1

        # pick object to ask the question
        object_in_question = vocabulary[random.randint(1, vocab_size - 1)]

        self.answer = msg.numbers_in_words[counter.get(object_in_question, 0)]

        self.give_away_message = 'Wrong. The right answer is: {answer}.'.format(
            answer=self.answer
        )

        self.set_message("I have {listing_objects}. How many {object} do I have? "\
            .format(
                listing_objects=partial_message,
                object=msg.pluralize(object_in_question, 2)
        ))
Esempio n. 14
0
    def give_instructions(self, event):

        separator = ""
        counter = {}
        partial_message = ""

        # pick how many objects in total will be described
        total = random.randint(1, max_total)

        for i in range(0, total):
            # for last object change separator from "," to "and"
            if i == total - 2:
                separator = " and "
            elif i == total - 1:
                separator = ""
            else:
                separator = ", "

            # pick object
            obj = vocabulary[random.randint(1, vocab_size - 1)]

            # build up message
            partial_message += msg.indef_article(obj)
            partial_message += separator

            # update counter
            if obj not in counter:
                counter[obj] = 0
            counter[obj] += 1

        # pick object to ask the question
        object_in_question = vocabulary[random.randint(1, vocab_size - 1)]

        self.answer = msg.numbers_in_words[counter.get(object_in_question, 0)]

        self.give_away_message = 'Wrong. The right answer is: {answer}.'.format(
            answer=self.answer
        )

        self.set_message("I have {listing_objects}. How many {object} do I have? "\
            .format(
                listing_objects=partial_message,
                object=msg.pluralize(object_in_question, 2)
        ))
Esempio n. 15
0
 def on_start(self, event):
     self.target_obj, = random.sample(objects, 1)
     self.set_message("How many {0} do you have?".format(
         msg.pluralize(self.target_obj, 2)))
 def on_start(self, event):
     self.target_obj, = random.sample(objects, 1)
     self.set_message("How many {0} do you have?".format(
                      msg.pluralize(self.target_obj, 2)))