def draw_splash(self): if game.run_count < game.runs_per_experiment: splash_msg = ('Ready for Run ' + str(game.run_count+1) + ' of ' + str(game.runs_per_experiment)) else: splash_msg = ('Done!') gg.draw_msg(self.screen, splash_msg, loc='center', pos=(.5*self.SCREEN_WIDTH, .5*self.SCREEN_HEIGHT), size=50) gg.draw_msg(self.screen, ('mode: ' + game.mode), loc='right', pos=(.975*self.SCREEN_WIDTH, .05*self.SCREEN_HEIGHT), size=24)
def draw_background(self): self.screen.fill(self.bg_color) if self.run_mode == 'idle' and self.loc == 'lab': instr_msg = ('Press Space for Run ' + str(self.trial_type_count+1) + ' of ' + str(self.TRIAL_TYPES)) gg.draw_msg(self.screen, instr_msg, loc='center', pos=(.5*self.SCREEN_WIDTH, .5*self.SCREEN_HEIGHT), size=48) if self.next_run_msg != '': gg.draw_msg(self.screen, self.next_run_msg, loc='center', pos=(.5*self.SCREEN_WIDTH, .4*self.SCREEN_HEIGHT), size=48)
def draw_instructions_timed(self): if self.next_visible: top_msg = 'Target visible' top_color = self.GOOD_MSG_COLOR else: top_msg = 'Target invisible' top_color = self.BAD_MSG_COLOR if self.next_ir == 'impulse': btm_msg = 'Instant feedback' btm_color = self.GOOD_MSG_COLOR else: btm_msg = 'Delayed feedback' btm_color = self.BAD_MSG_COLOR gg.draw_msg(self.screen, top_msg, color=top_color, center=(self.screen_mid[0], self.screen_mid[1]-50)) gg.draw_msg(self.screen, btm_msg, color=btm_color, center=(self.screen_mid[0], self.screen_mid[1]+50))
def draw_instructions_block(self): if self.next_target == 'new': top_msg = 'New target' top_color = self.GOOD_MSG_COLOR else: top_msg = 'Same target' top_color = self.BAD_MSG_COLOR if self.next_feedback == 'continuous': mid_msg = 'Continuous feedback' mid_color = self.A_MSG_COLOR else: mid_msg = 'Intermittent feedback' mid_color = self.B_MSG_COLOR if self.next_noise == 'good': btm_msg = 'Good signal' btm_color = self.A_MSG_COLOR else: btm_msg = 'Bad signal' btm_color = self.B_MSG_COLOR gg.draw_msg(self.screen, top_msg, color=top_color, center=(self.screen_mid[0], self.screen_mid[1]-75)) gg.draw_msg(self.screen, mid_msg, color=mid_color, center=(self.screen_mid[0], self.screen_mid[1])) if not self.playback_bool: gg.draw_msg(self.screen, btm_msg, color=btm_color, center=(self.screen_mid[0], self.screen_mid[1]+75))
def draw_debug(self, time_passed): fr = 1000/float(time_passed) fr_msg = 'frame rate: ' + str(fr) gg.draw_msg(self.screen, fr_msg, loc='left', pos=(10,33), size=28) force = self.daq.get_force() volt_msg_1 = 'out_volt_1: ' + str(force[0]) volt_msg_2 = 'out_volt_2: ' + str(force[1]) gg.draw_msg(self.screen, volt_msg_1, loc='left', pos=(10,66), size=28) gg.draw_msg(self.screen, volt_msg_2, loc='left', pos=(10,99), size=28)
def draw_debug(self, time_passed): fr = 1000/float(time_passed) fr_msg = 'frame rate: ' + str(fr) x_v_msg = 'x force: ' + str(self.input_force[0]) y_v_msg = 'y force: ' + str(self.input_force[1]) betas_active_msg = 'active beta: ' + str(self.psc_betas['active']) betas_force_msg = 'force beta: ' + str(self.psc_betas['force']) betas_complexity_msg = 'complexity beta: ' + str(self.psc_betas['complexity']) lvr_msg = 'last vol: ' + str(self.last_volume_received.value) gg.draw_msg(self.screen, fr_msg, loc='left', pos=(10,33), size=28) gg.draw_msg(self.screen, x_v_msg, loc='left', pos=(10,66), size=28) gg.draw_msg(self.screen, y_v_msg, loc='left', pos=(10,99), size=28) gg.draw_msg(self.screen, betas_active_msg, loc='left', pos=(10,132), size=28) gg.draw_msg(self.screen, betas_force_msg, loc='left', pos=(10,165), size=28) gg.draw_msg(self.screen, betas_complexity_msg, loc='left', pos=(10,198), size=28) gg.draw_msg(self.screen, lvr_msg, loc='left', pos=(10,231), size=28) if self.CALIBRATE_BOOL: self.cal_force = self.daq.force_transform_cal( self.daq.get_volts_cal()) z_v_msg = 'z lbs: ' + str(self.cal_force) gg.draw_msg(self.screen, z_v_msg, loc='left', pos=(10,231), size=28) fu.cal_record(self, self.f_cal)
def draw_splash(self): if game.run_count < game.runs_per_experiment: splash_msg = ('Ready for Run ' + str(game.run_count+1) + ' of ' + str(game.runs_per_experiment)) else: splash_msg = ('Done!') gg.draw_msg(self.screen, splash_msg, loc='center', pos=(.5*self.SCREEN_WIDTH, .5*self.SCREEN_HEIGHT), size=50) gg.draw_msg(self.screen, ('mode: ' + game.mode), loc='right', pos=(.975*self.SCREEN_WIDTH, .05*self.SCREEN_HEIGHT), size=24) if game.run_count > 0: points_msg = ('Points this run: ' + str(game.points_total)) time_msg = ('Average movement time: ' + str(round(np.mean( game.execution_time_array)/1000.,2)) + ' seconds') error_rate = np.mean(game.error_array) error_msg = ('Percent errors: ' + str(round(100*error_rate,1)) + '%') if game.run_count < game.runs_per_experiment: if error_rate > game.ERROR_CUTOFF: advice_msg = 'For the next run, try slowing down.' else: advice_msg = 'For the next run, try going faster.' else: advice_msg = '' if game.mode != 'scan': gg.draw_msg(self.screen, points_msg, loc='center', pos=(.5*self.SCREEN_WIDTH, .6*self.SCREEN_HEIGHT), size=35) gg.draw_msg(self.screen, time_msg, loc='center', pos=(.5*self.SCREEN_WIDTH, .7*self.SCREEN_HEIGHT), size=35) gg.draw_msg(self.screen, error_msg, loc='center', pos=(.5*self.SCREEN_WIDTH, .8*self.SCREEN_HEIGHT), size=35) gg.draw_msg(self.screen, advice_msg, loc='center', pos=(.5*self.SCREEN_WIDTH, .9*self.SCREEN_HEIGHT), size=35)