from otree.api import * from shared_out import * """ Sim for "Minimum Effort Game" """ class Constants(BaseConstants): name_in_url = 'minimum' players_per_group = None num_rounds = 10 instructions_template = 'minimum/instructions.html' class Subsession(BaseSubsession): pass class Group(BaseGroup): min = models.IntegerField() class Player(BasePlayer): effort = models.IntegerField(min=1, max=5) # FUNCTIONS def creating_session(subsession: Subsession): set_players_per_group(subsession) def set_payoff(player: Player): player.payoff = 5 * player.group.min - player.effort # PAGES class Introduction(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 class Main(Page): form_model = 'player' form_fields = ['effort'] class ResultsWaitPage(WaitPage): @staticmethod def after_all_players_arrive(group: Group): players = group.get_players() group.min = min([p.effort for p in players]) for p in players: set_payoff(p) class Results(Page): @staticmethod def vars_for_template(player: Player): return {'my_payoff': int(player.payoff)} page_sequence = [Introduction, Main, ResultsWaitPage, Results]