from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random author = 'Siyu' doc = """ Co-creation Effort """ class Constants(BaseConstants): name_in_url = 'my_cocreation2' players_per_group = 2 num_rounds = 10 Task1_template = 'my_cocreation2/Task1.html' cost=0.01 theta=30 "n=1, delta=1" class Subsession(BaseSubsession): def creating_session(self): if self.round_number == 1: self.group_randomly(fixed_id_in_group=True) else: self.group_like_round(1) def creating_session(self): for player in self.get_players(): player.random_n = random.randint(-30, 30) print('player random number is', player.random_n) class Group(BaseGroup): firm_effort=models.IntegerField(min=0, max=120, doc="""Firm's Effort""",) firm_price=models.IntegerField(min=0, max=120, doc="""Firm's Price""",) student_effort=models.IntegerField(min=0, max=120, doc="""Student's Effort""") student_buy= models.BooleanField() def set_payoffs(self): p1 = self.get_player_by_id(1) p2 = self.get_player_by_id(2) if self.student_buy: p1.payoff = self.firm_price - self.firm_effort*self.firm_effort*Constants.cost p2.payoff = self.firm_effort + self.student_effort - self.firm_price - self.student_effort*self.student_effort*Constants.cost+p2.random_n else: p1.payoff = - self.firm_effort*self.firm_effort*Constants.cost p2.payoff = - self.student_effort*self.student_effort*Constants.cost class Player(BasePlayer): random_n = models.IntegerField()