from otree.api import * author = 'Corey Scheinfeld' doc = """ Stag Hunt """ class Constants(BaseConstants): name_in_url = 'staghunt' players_per_group = 2 num_rounds = 5 instructions_template = 'staghunt/instructions.html' class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): stag = models.BooleanField() # FUNCTIONS def creating_session(subsession: Subsession): subsession.group_randomly() def set_payoffs(group: Group): [player1, player2] = group.get_players() stags = [player1.stag, player2.stag] if stags == [True, True]: payoffs = [75, 75] elif stags == [True, False]: payoffs = [0, 60] elif stags == [False, False]: payoffs = [60, 60] else: payoffs = [60, 0] player1.payoff = payoffs[0] player2.payoff = payoffs[1] # PAGES class Introduction(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 class Main(Page): form_model = 'player' form_fields = ['stag'] class ResultsWaitPage(WaitPage): after_all_players_arrive = set_payoffs class Results(Page): @staticmethod def vars_for_template(player: Player): return dict(partner=player.get_others_in_group()[0]) page_sequence = [Introduction, Main, ResultsWaitPage, Results]