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 = 'promise2' players_per_group = 2 num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): enter = models.BooleanField(choices=[(True, 'Yes'), (False, 'No')]) roll = models.BooleanField(choices=[(True, 'Yes'), (False, 'No')]) die = models.IntegerField() def set_payoffs(self): pA = self.get_player_by_role('Player A') pB = self.get_player_by_role('Player B') self.die = random.randint(1, 6) if self.enter and self.roll: if self.die > 1: pA.payoff = 12 pB.payoff = 10 else: pA.payoff = 0 pB.payoff = 10 if self.enter and not self.roll: pA.payoff = 0 pB.payoff = 14 if not self.enter: pA.payoff = 5 pB.payoff = 5 class Player(BasePlayer): def role(self): if self.id_in_group == 1: return 'Player A' if self.id_in_group == 2: return 'Player B'