from otree.api import * from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'scl_control' players_per_group = 2 num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): firm = models.IntegerField( choices=[['7', 'A'], ['8', 'B'], ['5', 'C'], ['9', 'D'], ['1', 'E'], ['2', 'F'], ['4', 'G'], ['6', 'H'], ['3', 'I'], ['10', 'J'] ], widget=widgets.RadioSelectHorizontal, ) # PAGES class MyPage(Page): form_model = "player" form_fields = ["firm"] class ResultsWaitPage(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] rnd = random.randint(1, 100) if rnd <= player_1.firm * 10: player_1.payoff = 21 - player_1.firm else: player_1.payoff = 10 if rnd <= player_2.firm * 10: player_2.payoff = 21 - player_2.firm else: player_2.payoff = 10 class Results(Page): @staticmethod def before_next_page(player: Player, timeout_happened): participant = player.participant participant.payoff1 = player.payoff def vars_for_template(player: Player): return dict(others=player.get_others_in_group()) page_sequence = [MyPage, ResultsWaitPage]