from otree.api import * c = cu doc = '\nSimple trust game\n' class C(BaseConstants): NAME_IN_URL = 'trust_simple' PLAYERS_PER_GROUP = 2 NUM_ROUNDS = 5 ENDOWMENT = cu(10) MULTIPLIER = 3 INSTRUCTIONS_TEMPLATE = 'trust_simple/instructions.html' class Subsession(BaseSubsession): pass def creating_session(subsession: Subsession): session = subsession.session ## Randomly assign players to roles subsession.group_randomly() ## Assign aliases import random #f= open('C:/Users/gvonn/Desktop/otreeProjects/nameListSample.txt') #content= f.read() #f.close() #name_list= content.split("\n") name_list=["mai","lu","huy","tuan","kai","priya","tanisha","kenya","lakisha","tyrone","latasha","latisha", "jermaine","latonya","mohammad","keisha","ebony","aisha","jamal","lawanda","darius","lamar","tasha","latoya", "terrell","leroy","cedric","latanya","ahmad","dewayne", "tamika","pablo","esperanza","santiago","jose","julio","santos","humberto","roberto", "alejandro","jesus","gonzalo","enrique","guadalupe","fernando", "consuelo","lupe","miguel","rodrigo","juan","ernesto","reynaldo","ricardo","heriberto", "carmelita","eduardo","brad","becky","katie","scotty","scott","jake","mindy","nancy","katherine", "debbie","gary","timmy","kathryn","dolly","katelyn", "holly","kathleen","april","erin","andy","joan","patrick","hank","lindsey","pete","brent", "todd","tim","molly","jane","brett","allison","cathy", "ellen","brittany","dean","dustin","phil","dan","amy","austin","billy","guy","heather","abigail", "heidi","adam","emma","christine","melissa"] for player in subsession.get_players(): player.trust_alias = random.choice(name_list).capitalize() class Group(BaseGroup): sent_amount = models.CurrencyField(choices=[[0, '0'], [1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5'], [6, '6'], [7, '7'], [8, '8'], [9, '9'], [10, '10']], doc='Amount sent by P1', label='Please select an amount', max=C.ENDOWMENT, min=0) sent_back_amount = models.CurrencyField(doc='Amount sent back by P2', label='Please select an amount') def sent_back_amount_choices(group: Group): return currency_range(0, group.sent_amount * C.MULTIPLIER, 1) def set_payoffs(group: Group): p1 = group.get_player_by_id(1) p2 = group.get_player_by_id(2) p1.payoff = C.ENDOWMENT - group.sent_amount + group.sent_back_amount p2.payoff = group.sent_amount * C.MULTIPLIER - group.sent_back_amount class Player(BasePlayer): trust_alias = models.StringField(initial='NA') class Introduction(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): return player.round_number == 1 class Send(Page): form_model = 'group' form_fields = ['sent_amount'] @staticmethod def is_displayed(player: Player): group = player.group return player.id_in_group == 1 @staticmethod def vars_for_template(player: Player): group = player.group return dict(alias1=group.get_player_by_id(1).trust_alias, alias2= group.get_player_by_id(2).trust_alias) class WaitForP1(WaitPage): pass class SendBack(Page): form_model = 'group' form_fields = ['sent_back_amount'] @staticmethod def is_displayed(player: Player): group = player.group return player.id_in_group == 2 @staticmethod def vars_for_template(player: Player): group = player.group return dict(tripled_amount=group.sent_amount * C.MULTIPLIER, alias1=group.get_player_by_id(1).trust_alias, alias2= group.get_player_by_id(2).trust_alias) class ResultsWaitPage(WaitPage): after_all_players_arrive = set_payoffs class Results(Page): form_model = 'player' @staticmethod def vars_for_template(player: Player): group = player.group return dict(alias1=group.get_player_by_id(1).trust_alias, alias2= group.get_player_by_id(2).trust_alias) page_sequence = [Introduction, Send, WaitForP1, SendBack, ResultsWaitPage, Results]