from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, Page, WaitPage ) cu = c doc = '' class Constants(BaseConstants): name_in_url = 'my_trust' players_per_group = 2 num_rounds = 2 endowment = 10 multiple = 3 def creating_session(subsession): session = subsession.session subsession.group_randomly() class Subsession(BaseSubsession): creating_session = creating_session def allocate_to_trustee(group): group.total_allocate = sum([p.allocate for p in group.get_players()]) group.point_increased = group.total_allocate*Constants.multiple def return_back_to_trustor(group): group.total_allocate = sum([p.allocate for p in group.get_players()]) group.point_increased = group.total_allocate*Constants.multiple group.total_return_back = sum([p.return_back for p in group.get_players()]) players = group.get_players() if(group.total_return_back <= group.point_increased): players[0].payoff = Constants.endowment - group.total_allocate + group.total_return_back players[1].payoff = group.point_increased - group.total_return_back else: players[0].payoff = Constants.endowment - group.total_allocate + group.point_increased players[1].payoff = 0 class Group(BaseGroup): total_allocate = models.FloatField() total_return_back = models.FloatField() point_increased = models.FloatField() allocate_to_trustee = allocate_to_trustee return_back_to_trustor = return_back_to_trustor class Player(BasePlayer): allocate = models.FloatField(initial=0, label='請問你決定分配多少點數給你的組員?', max=Constants.endowment, min=0) return_back = models.FloatField(initial=0, label='請問你決定分配多少點數給你的組員?', min=0)