from otree.api import * import random c = Currency doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'real_effort_numbers' PLAYERS_PER_GROUP = None NUM_ROUNDS = 2 payment_per_correct_answer = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): number_entered = models.IntegerField() sum_of_of_numbers = models.IntegerField() # PAGES class AddNumbers(Page): form_model = "player" form_fields = ["number_entered"] @staticmethod def vars_for_template(player: Player): number_1 = random.randint(1, 100) number_2 = random.randint(1, 100) player.sum_of_of_numbers = number_1 + number_2 return { "number_1": number_1, "number_2": number_2, } @staticmethod def before_next_page(player: Player, timeout_happened): if player.sum_of_of_numbers == player.number_entered: player.payoff = C.payment_per_correct_answer class Results(Page): @staticmethod def vars_for_template(player: Player): if player.sum_of_of_numbers == player.number_entered: message = "Your answer is CORRECT!" else: message = "Your answer is INCORRECT!" return { "message": message, } class CombinedResults(Page): @staticmethod def is_displayed(player: Player): return player.round_number == C.NUM_ROUNDS @staticmethod def vars_for_template(player: Player): all_players = player.in_all_rounds() combined_payoff = 0 for player in all_players: combined_payoff += player.payoff return {"combined_payoff": combined_payoff} page_sequence = [AddNumbers, Results, CombinedResults]