from otree.api import * import random doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'real_effort2' PLAYERS_PER_GROUP = None NUM_ROUNDS = 3 PAYMENT_PER_ROUND = cu(1) class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): number_entered = models.IntegerField() sum_of_numbers = models.IntegerField() slider_value1 = models.IntegerField(min=0, max=100) # Slider range from 0 to 100 slider_value2 = models.IntegerField(min=0, max=100) slider_value3 = models.IntegerField(min=0, max=100) slider_value4 = models.IntegerField(min=0, max=100) slider_value5 = models.IntegerField(min=0, max=100) slider_value6 = models.IntegerField(min=0, max=100) slider_value7 = models.IntegerField(min=0, max=100) slider_value8 = models.IntegerField(min=0, max=100) slider_value9 = models.IntegerField(min=0, max=100) slider_value10 = models.IntegerField(min=0, max=100) # 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) number_3 = random.randint(1, 100) number_4 = random.randint(1, 100) number_5 = random.randint(1, 100) number_6 = random.randint(1, 100) number_7 = random.randint(1, 100) number_8 = random.randint(1, 100) number_9 = random.randint(1, 100) number_10 = random.randint(1, 100) number_11 = random.randint(1, 100) number_12 = random.randint(1, 100) number_13 = random.randint(1, 100) number_14 = random.randint(1, 100) number_15 = random.randint(1, 100) number_16 = random.randint(1, 100) number_17 = random.randint(1, 100) number_18 = random.randint(1, 100) number_19 = random.randint(1, 100) number_20 = random.randint(1, 100) player.sum_of_numbers = number_1 + number_2 + number_3 + number_4 return { "number_1": number_1, "number_2": number_2, "number_3": number_3, "number_4": number_4, "number_5": number_5, "number_6": number_6, "number_7": number_7, "number_8": number_8, "number_9": number_9, "number_10": number_10, "number_11": number_11, "number_12": number_12, "number_13": number_13, "number_14": number_14, "number_15": number_15, "number_16": number_16, "number_17": number_17, "number_18": number_18, "number_19": number_19, "number_20": number_20, } @staticmethod def before_next_page(player: Player, timeout_happened): if player.sum_of_numbers == player.number_entered: player.payoff = C.PAYMENT_PER_ROUND # timeout_seconds = 20 #def before_next_page(player, timeout_happened): # if timeout_happened: # pass pass class Results(Page): pass 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 temp_player in all_players: combined_payoff += temp_player.payoff return { "combined_payoff": combined_payoff } pass page_sequence = [AddNumbers, Results, CombinedResults]