from otree.api import Currency as c, currency_range import time from ._builtin import Page, WaitPage from .models import Constants class CognitiveReflectionTest(Page): form_model = 'player' form_fields = ['crt_bat', 'crt_widget', 'crt_lake'] class TowerofHanoi(Page): form_model = 'player' form_fields = ['Hanoi_moves'] def get_timeout_seconds(self): return self.session.config['Hanoi_time']*60 def vars_for_template(self): self.participant.vars['start_time'] = time.time() return{ 'available_time':self.session.config['Hanoi_time'], 'Hanoi_intercept':c(self.session.config['Hanoi_intercept']).to_real_world_currency(self.session), 'Hanoi_penalty':c(self.session.config['Hanoi_penalty']).to_real_world_currency(self.session) } def before_next_page(self): self.player.Hanoi_time=time.time()-self.participant.vars['start_time'] if self.timeout_happened: self.player.Hanoi_success=False self.player.Hanoi_payoff=0 else: self.player.Hanoi_success=True self.player.Hanoi_payoff=max(0, (self.session.config['Hanoi_intercept']- (self.player.Hanoi_moves * self.session.config['Hanoi_penalty']))) self.player.payoff = self.player.Hanoi_payoff class HanoiResult(Page): def vars_for_template(self): return { 'CurrencyPayH': self.player.Hanoi_payoff.to_real_world_currency(self.session) } class Demographics(Page): form_model = 'player' form_fields = ['age', 'gender', 'nationality', 'UG_Major', 'G_Year', 'Game', 'Competition', 'WinLove', 'Strategy', 'StrategyExplain'] page_sequence = [CognitiveReflectionTest, TowerofHanoi, HanoiResult, Demographics]