from otree.api import * author = 'Your name here' doc = """ Cournot Oligopoly Game """ class Constants(BaseConstants): name_in_url = 'cournot' players_per_group = 2 num_rounds = 10 instructions_template = 'cournot/instructions.html' class Subsession(BaseSubsession): pass class Group(BaseGroup): price = models.IntegerField() class Player(BasePlayer): produce = models.IntegerField() profit = models.IntegerField() opp = models.IntegerField() # FUNCTIONS def creating_session(subsession: Subsession): subsession.group_randomly() def set_market(group: Group): players = group.get_players() group.price = 100 - (players[0].produce + players[1].produce) for p in players: p.opp = p.get_others_in_group()[0].produce p.profit = p.produce * (group.price - 10) # PAGES class Introduction(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 class Main(Page): form_model = 'player' form_fields = ['produce'] class ResultsWaitPage(WaitPage): after_all_players_arrive = set_market class Results(Page): pass page_sequence = [Introduction, Main, ResultsWaitPage, Results]