from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) author = "Jon Wood" doc = """ Ultimatum game. One player offers to split an endowment between both participants. This can either be rejected or accepted. """ class Constants(BaseConstants): name_in_url = 'UltimatumF' players_per_group = 2 num_rounds = 1 endowment = c(10) instructions_template = 'ultimatum_gameF/instructions.html' class Subsession(BaseSubsession): pass class Group(BaseGroup): amount_offered = models.CurrencyField(min=0,max=Constants.endowment, doc="Amount offered") offer_accepted = models.BooleanField(doc="if offered amount is accepted") def set_payoffs(self): p1, p2 = self.get_players() p1.payoff = (Constants.endowment - self.amount_offered)*self.offer_accepted p2.payoff = self.amount_offered*self.offer_accepted # for p in p1, p2: # p.participant.vars["ultimatum_gameF"] = dict(payoff=p.payoff) # print('p.payoff:', p.payoff) p1.participant.vars['earning_1'] = p1.payoff p2.participant.vars['earning_1'] = p2.payoff class Player(BasePlayer): pass