from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Start(Page): form_model = 'player' form_fields = ['Choice'] def is_displayed(self): return self.round_number == 1 def before_next_page(self): import time self.participant.vars["expiry"] = time.time() + 5*60 self.participant.vars["flag"] = time.time() + 5*65 self.participant.vars["correct"] = 0 self.participant.vars["wrong"] = 0 self.participant.vars["rounds"] = 0 self.participant.vars["count"] = 0 class Addnumbers1(Page): form_model = 'player' form_fields = ['number_entered'] timer_text = '任务3剩余时间:' def is_displayed(self): return self.get_timeout_seconds() >= 0 def vars_for_template(self): import random number_1 = random.randint(10,99) number_2 = random.randint(10,99) number_3 = random.randint(10,99) number_4 = random.randint(10,99) number_5 = random.randint(10,99) self.player.sum_of_number = number_1 + number_2 + number_3 + number_4 + number_5 players = self.player.in_previous_rounds() combinedpayoff = 0 for player in players: combinedpayoff += player.reward self.player.all_reward = combinedpayoff return dict( number_1 = number_1, number_2 = number_2, number_3 = number_3, number_4 = number_4, number_5 = number_5, correct_number = self.participant.vars["correct"], wrong_number = self.participant.vars["wrong"] ) def before_next_page(self): self.participant.vars["count"] += 1 if self.player.sum_of_number == self.player.number_entered: self.player.reward = Constants.payment_per_correct_answer self.participant.vars["correct"] += 1 else: self.participant.vars["wrong"] += 1 def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() class CombinedPayoff(Page): form_model = 'player' timer_text = '自动跳转到任务4的剩余时间:' def is_displayed(self): if self.get_timeout_seconds() >= 0 and self.get_timeout_seconds() < 25: return True return False def vars_for_template(self): players = self.player.in_previous_rounds() combinedpayoff = 0 for player in players: combinedpayoff += player.reward return dict( combinedpayoff = combinedpayoff, count = self.participant.vars["count"]-1, correct_number = self.participant.vars["correct"], ) def before_next_page(self): self.participant.vars["rounds"] = Constants.num_rounds def get_timeout_seconds(self): import time return self.participant.vars["flag"] - time.time() class EndofRound1(Page): form_model = 'player' def is_displayed(self): return self.participant.vars["rounds"] == Constants.num_rounds def app_after_this_page(self, upcoming_apps): return upcoming_apps[0] page_sequence = [Start, Addnumbers1, CombinedPayoff, EndofRound1]