from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random doc = """ trust game """ class Constants(BaseConstants): name_in_url = 'trust_ecc' players_per_group = 4 num_rounds = 1 endowment = c(10) multiplier = 3 instructions_template = 'trust_ecc/Instructions.html' examples_template = 'trust_ecc/Examples.html' class Subsession(BaseSubsession): pass class Group(BaseGroup): sent_amount1 = models.CurrencyField( doc="""Amount sent by P1""", ) sent_amount2 = models.CurrencyField( doc="""Amount sent by P1""", ) sent_amount3 = models.CurrencyField( doc="""Amount sent by P1""", ) sent_back_amount1 = models.CurrencyField( doc="""Amount sent back by Leader to Employee1""", ) sent_back_amount2 = models.CurrencyField( doc="""Amount sent back by Leader to Employee2""", ) sent_back_amount3 = models.CurrencyField( doc="""Amount sent back by Leader to Employee3""", ) def set_payoffs(self): for p in self.get_players(): p1 = self.get_player_by_id(1) p1.role = 'Leader' p2 = self.get_player_by_id(2) p2.role = 'Employee1' p3 = self.get_player_by_id(3) p3.role = 'Employee2' p4 = self.get_player_by_id(4) p4.role = 'Employee3' if p.role == 'Leader': p.payoff = self.group.sent_amount1 * Constants.multiplier + self.group.sent_amount2 * Constants.\ multiplier + self.group.sent_amount3 * Constants.multiplier - self.group.sent_back_amount1 - self.group.sent_back_amount2 - self.group.sent_back_amount3 elif p.role == 'Employee1': p.payoff = Constants.endowment - self.group.sent_amount1 + self.group.sent_back_amount1 elif p.role == 'Employee2': p.payoff = Constants.endowment - self.group.sent_amount2 + self.group.sent_back_amount2 elif p.role == 'Employee3': p.payoff = Constants.endowment - self.group.sent_amount3 + self.group.sent_back_amount3 class Player(BasePlayer): role = models.StringField() practice_question1 = models.IntegerField( doc="""correct answer is 13""", ) practice_question2 = models.IntegerField( doc="""correct answer is 30""", )