def send_next_question(self): # THIS IS NOT USED control_message = ControlMsg() control_message.nextStep = "QUESTION-NEXT" control_message.questionNum = self.current_question control_message.questionLevel = self.level control_message.robotSpeech = self.questions[self.level][ self.current_question]['Spoken Question']
def give_structure_hint( self): # give a hint in the form of the structure of the problem control_message = ControlMsg() control_message.nextStep = "SHOWSTRUCTURE" control_message.questionNum = self.current_question control_message.questionLevel = self.level control_message.robotSpeech = "Let's look at how to structure a solution" self.decisons_pub.publish(control_message) print "sent:", control_message
def repeat_question( self ): # send this message to have the student try the same question again control_message = ControlMsg() # with no tutoring behavior control_message.nextStep = "QUESTION-REPEAT" control_message.questionNum = self.current_question control_message.questionLevel = self.level control_message.robotSpeech = "" #Try that again." #we don't want to say anything here. self.decisons_pub.publish(control_message) print "sent:", control_message
def no_action(self): control_message = ControlMsg() control_message.nextStep = "NOACTION" control_message.questionNum = self.current_question control_message.questionLevel = self.level control_message.robotSpeech = "" question_id = self.questions[self.level][ self.current_question]['QuestionID'] self.log_transaction("NO-ACTION", question_id, self.level) self.decisons_pub.publish(control_message) print "sent: ", control_message
def give_think_aloud(self): # ask the student to think aloud control_message = ControlMsg() control_message.nextStep = "THINKALOUD" control_message.questionNum = self.current_question control_message.questionLevel = self.level control_message.robotSpeech = "" #"What is the first thing you want to do to solve this problem?" question_id = self.questions[self.level][ self.current_question]['QuestionID'] self.log_transaction("THINKALOUD", question_id, self.level) self.decisons_pub.publish(control_message) print "sent:", control_message
def tic_tac_toe_break(self): # trigger a game of tic tac toe for a break control_message = ControlMsg( ) # the robot message here is the speech for the beginning of the game control_message.nextStep = "TICTACTOE" control_message.questionNum = self.current_question control_message.questionLevel = self.level control_message.robotSpeech = "Lets take a break and play a game of tic-tac-toe. You will be exes, and I will be ohs. You can go first. Click any square on the board." question_id = self.questions[self.level][ self.current_question]['QuestionID'] self.log_transaction("TICTACTOE-START", question_id, self.level) self.decisons_pub.publish(control_message) print "sent:", control_message
def give_tutorial( self ): # give an interactive tutorial. like the worked example, this is controled by node_tablet control_message = ControlMsg() control_message.nextStep = "SHOWTUTORIAL" control_message.questionNum = self.current_question control_message.questionLevel = self.level control_message.robotSpeech = "" question_id = self.questions[self.level][ self.current_question]['QuestionID'] self.log_transaction("INTERACTIVE-TUTORIAL", question_id, self.level) self.decisons_pub.publish(control_message) print "sent:", control_message
def give_example( self ): # give a worked example - what example is given is determined by node_tablet code control_message = ControlMsg( ) # and is based on the level. node_tablet controls all tablet and robot actions control_message.nextStep = "SHOWEXAMPLE" # during this control_message.questionNum = self.current_question control_message.questionLevel = self.level control_message.robotSpeech = "" question_id = self.questions[self.level][ self.current_question]['QuestionID'] self.log_transaction("WORKED-EXAMPLE", question_id, self.level) self.decisons_pub.publish(control_message) print "sent:", control_message
def first_question(self): self.total_num_questions += 1 self.tries = 0 control_message = ControlMsg() control_message.nextStep = "QUESTION-FIRST" control_message.questionNum = self.current_question control_message.questionLevel = self.level control_message.robotSpeech = self.questions[self.level][ self.current_question]['Spoken Question'] print self.level, self.current_question, self.questions[self.level][ self.current_question] #time.sleep(3) #wait a little before sending first question message so robot can finish intro self.decisons_pub.publish(control_message) print "sent:", control_message
def question_next_level( self ): #aditi - no longer using # indicates that the student should move to the next level self.tries = 0 # so we increase the level number and go to question 1 self.current_question = 1 self.level += 1 control_message = ControlMsg() control_message.nextStep = "QUESTION-LEVEL" control_message.questionNum = self.current_question control_message.questionLevel = self.level control_message.robotSpeech = self.questions[self.level][ self.current_question][ 'Spoken Question'] # give the text for the question to the robot self.decisons_pub.publish(control_message) print "sent:", control_message
def next_question( self ): # indicates that the student should move on to the next question #self.total_num_questions += 1 # keeps track of the total number of questions student has seen self.tries = 0 # reset the number of attempts on the question self.level = self.total_num_questions % 3 if self.difficultyGroup == 0: self.level += 1 else: self.level += 3 if self.total_num_questions % 3 == 0: self.current_question += 1 self.total_num_questions += 1 if (self.current_question >= len(self.questions[self.level])): print "this should only happen if student has really finished all questions" #return self.question_next_level() control_message = ControlMsg() control_message.nextStep = "QUESTION-NEXT" control_message.questionNum = self.current_question control_message.questionLevel = self.level if (self.current_question < len(self.questions[self.level])): control_message.robotSpeech = self.questions[self.level][ self.current_question][ 'Spoken Question'] # we give the text for this question to the robot here else: control_message.robotSpeech = "" #no speech in case they finish all questions #print self.level, self.current_question, self.questions[self.level][self.current_question] time.sleep( 3 ) #wait a little before sending next question message so robot can say correct/incorrect self.decisons_pub.publish(control_message) print "sent:", control_message