63 lines
1.5 KiB
Python
63 lines
1.5 KiB
Python
|
from otree.api import (
|
||
|
models,
|
||
|
widgets,
|
||
|
BaseConstants,
|
||
|
BaseSubsession,
|
||
|
BaseGroup,
|
||
|
BasePlayer,
|
||
|
Currency as c,
|
||
|
currency_range,
|
||
|
)
|
||
|
|
||
|
|
||
|
doc = """
|
||
|
This is a standard 2-player trust game where the amount sent by player 1 gets
|
||
|
tripled. The trust game was first proposed by
|
||
|
<a href="http://econweb.ucsd.edu/~jandreon/Econ264/papers/Berg%20et%20al%20GEB%201995.pdf" target="_blank">
|
||
|
Berg, Dickhaut, and McCabe (1995)
|
||
|
</a>.
|
||
|
"""
|
||
|
|
||
|
|
||
|
class Constants(BaseConstants):
|
||
|
name_in_url = 'trust'
|
||
|
players_per_group = 2
|
||
|
num_rounds = 1
|
||
|
|
||
|
instructions_template = 'trust/instructions.html'
|
||
|
|
||
|
# Initial amount allocated to each player
|
||
|
endowment = c(100)
|
||
|
multiplier = 3
|
||
|
|
||
|
|
||
|
class Subsession(BaseSubsession):
|
||
|
pass
|
||
|
|
||
|
|
||
|
class Group(BaseGroup):
|
||
|
sent_amount = models.CurrencyField(
|
||
|
min=0, max=Constants.endowment, doc="""Amount sent by P1"""
|
||
|
)
|
||
|
|
||
|
sent_back_amount = models.CurrencyField(doc="""Amount sent back by P2""", min=c(0))
|
||
|
|
||
|
def sent_back_amount_max(self):
|
||
|
return self.sent_amount * Constants.multiplier
|
||
|
|
||
|
def set_payoffs(self):
|
||
|
p1 = self.get_player_by_id(1)
|
||
|
p2 = self.get_player_by_id(2)
|
||
|
p1.payoff = Constants.endowment - self.sent_amount + self.sent_back_amount
|
||
|
p2.payoff = self.sent_amount * Constants.multiplier - self.sent_back_amount
|
||
|
|
||
|
|
||
|
class Player(BasePlayer):
|
||
|
# def role(self):
|
||
|
# return {1: 'A', 2: 'B'}[self.id_in_group]
|
||
|
|
||
|
def role(self):
|
||
|
if self.id_in_group == 1:
|
||
|
return 'trustor'
|
||
|
if self.id_in_group == 2:
|
||
|
return 'trustee'
|