from otree.api import * c = cu doc = '\nOne player decides how to divide a certain amount between himself and the other\nplayer.\nSee: Kahneman, Daniel, Jack L. Knetsch, and Richard H. Thaler. "Fairness\nand the assumptions of economics." Journal of business (1986):\nS285-S300.\n' class C(BaseConstants): NAME_IN_URL = 'dictator' PLAYERS_PER_GROUP = 2 NUM_ROUNDS = 3 ENDOWMENT = cu(10) INSTRUCTIONS_TEMPLATE = 'dictator/instructions.html' class Subsession(BaseSubsession): pass def creating_session(subsession: Subsession): session = subsession.session ## Randomly assign players to roles subsession.group_randomly() 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.dictator_alias = random.choice(name_list).capitalize() class Group(BaseGroup): dsend = 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 dictator decided to keep for himself', label='Please select an amount', max=C.ENDOWMENT, min=0) def set_payoffs(group: Group): p1 = group.get_player_by_id(1) p2 = group.get_player_by_id(2) p1.payoff = C.ENDOWMENT - group.dsend p2.payoff = group.dsend class Player(BasePlayer): dictator_alias = models.StringField(initial='NA') class Introduction(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): return player.round_number == 1 class Offer(Page): form_model = 'group' form_fields = ['dsend'] @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).dictator_alias, alias2=group.get_player_by_id(2).dictator_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(kept=C.ENDOWMENT - group.dsend, alias1=group.get_player_by_id(1).dictator_alias, alias2=group.get_player_by_id(2).dictator_alias) class LastPage(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): return player.round_number == 3 page_sequence = [Introduction, Offer, ResultsWaitPage, Results, LastPage]