from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'my_test_trust_game' players_per_group = 2 num_rounds = 3 endowment = c(100) # multiplication_factor = 3 instructions_template = 'trust_simple/Instructions.html' class Subsession(BaseSubsession): def before_session_starts(self): # self.group_randomly(fixed_id_in_group=False) # if self.round_number == 1: # for group in self.get_groups(): # group.multiplication_factor = random.choice([2, 3]) # else: # for group in self.get_groups(): # group.multiplication_factor = group.multiplication_factor.in_round(1) if self.round_number == 1: self.group_randomly(fixed_id_in_group=False) for group in self.get_groups(): group.multiplication_factor = random.choice([2,3]) else: for group in self.get_groups(): group.multiplication_factor = group.in_round(1).multiplication_factor # for group in self.get_groups(): # if group.multiplication_factor.in_round(1) == 2: # self.group_randomly() # else: # self.group_randomly() class Group(BaseGroup): sent_amount = models.CurrencyField( choices=currency_range(0,Constants.endowment,c(10)) ) sent_back_amount = models.CurrencyField() multiplication_factor = models.PositiveIntegerField() def set_payoffs(self): p1,p2 = self.get_players() p1.payoff = Constants.endowment - self.sent_amount + self.sent_back_amount p2.payoff = self.sent_amount * self.multiplication_factor - self.sent_back_amount # p1.real_payoff = c(10).to_real_world_currency(self.session) # p2.real_payoff = c(10).payoff.to_real_world_currency(self.session) class Player(BasePlayer): pass