from otree.api import * import random doc = """ end of experiment """ class C(BaseConstants): NAME_IN_URL = 'payment_info' PLAYERS_PER_GROUP = 2 NUM_ROUNDS = 1 completion_code = '12345' class Subsession(BaseSubsession): pass class Group(BaseGroup): final_game_index = models.IntegerField() def set_final_game_index(self): final_game_index = random.randint(0, 3) for p in self.get_players(): p.participant.vars['final_game_index'] = final_game_index class Player(BasePlayer): game_payoff_final = models.IntegerField() # FUNCTIONS def calculate_bonus(group: Group): final_game_index = random.randint(0, 3) for p in group.get_players(): all_game_payoffs = [] all_game_payoffs.append(p.participant.vars['game_payoff_BoS']) all_game_payoffs.append(p.participant.vars['game_payoff_BoSC']) all_game_payoffs.append(p.participant.vars['game_payoff_Stag']) all_game_payoffs.append(p.participant.vars['game_payoff_Pennies']) p.participant.vars['final_game_index'] = final_game_index p.participant.vars['game_payoff_final'] = all_game_payoffs[final_game_index] p.game_payoff_final = all_game_payoffs[final_game_index] # PAGES class CalculateBonus(WaitPage): after_all_players_arrive = 'calculate_bonus' # class CalculateBonus(Page): # timeout_seconds = 3 # # def before_next_page(player, group, timeout_happened): # all_game_payoffs = [] # all_game_payoffs.append(player.participant.vars['game_payoff_BoS']) # all_game_payoffs.append(player.participant.vars['game_payoff_BoSC']) # all_game_payoffs.append(player.participant.vars['game_payoff_Stag']) # all_game_payoffs.append(player.participant.vars['game_payoff_Pennies']) # # group.set_final_game_index() # # player.game_payoff_final = all_game_payoffs[player.participant.vars['final_game_index']] # player.participant.vars['game_payoff_final'] = all_game_payoffs[player.participant.vars['final_game_index']] class PaymentInfo(Page): pass page_sequence = [CalculateBonus, PaymentInfo]