from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random import json author = 'Your name here' doc = """ Part 1 - (b) Subjects face the main task of Part 1 (a series of DGs). """ class Constants(BaseConstants): name_in_url = 'part1_b' players_per_group = None #num_rounds = 1 tasks = ['DG1', 'DG2', 'DG3', 'DG4', 'DG5', 'DG6', 'DG7', 'DG8', 'DG9', 'DG10', 'DG11', 'DG12', 'DG13', 'DG14', 'DG15', 'DG16', 'DG17', 'DG18', 'DG19', 'DG20', 'DG21', 'DG22', 'DG23', 'DG24', 'DG25', 'DG26', 'DG27', 'DG28', 'DG29', 'DG30', 'DG31', 'DG32', 'DG33', 'DG34', 'DG35', 'DG36', 'DG37', 'DG38', 'DG39'] # num_rounds = len(tasks)+1 num_rounds = len(tasks) dg1_X_pointsA = 940 dg1_X_pointsB = 150 dg1_Y_pointsA = 800 dg1_Y_pointsB = 510 dg2_X_pointsA = 970 dg2_X_pointsB = 490 dg2_Y_pointsA = 770 dg2_Y_pointsB = 170 dg3_X_pointsA = 1060 dg3_X_pointsB = 330 dg3_Y_pointsA = 680 dg3_Y_pointsB = 330 dg4_X_pointsA = 990 dg4_X_pointsB = 480 dg4_Y_pointsA = 750 dg4_Y_pointsB = 180 dg5_X_pointsA = 930 dg5_X_pointsB = 510 dg5_Y_pointsA = 810 dg5_Y_pointsB = 150 dg6_X_pointsA = 430 dg6_X_pointsB = 1030 dg6_Y_pointsA = 230 dg6_Y_pointsB = 710 dg7_X_pointsA = 370 dg7_X_pointsB = 1060 dg7_Y_pointsA = 290 dg7_Y_pointsB = 680 dg8_X_pointsA = 350 dg8_X_pointsB = 1060 dg8_Y_pointsA = 310 dg8_Y_pointsB = 680 dg9_X_pointsA = 1010 dg9_X_pointsB = 190 dg9_Y_pointsA = 730 dg9_Y_pointsB = 470 dg10_X_pointsA = 420 dg10_X_pointsB = 1040 dg10_Y_pointsA = 240 dg10_Y_pointsB = 700 dg11_X_pointsA = 450 dg11_X_pointsB = 1020 dg11_Y_pointsA = 210 dg11_Y_pointsB = 720 dg12_X_pointsA = 470 dg12_X_pointsB = 730 dg12_Y_pointsA = 190 dg12_Y_pointsB = 1010 dg13_X_pointsA = 870 dg13_X_pointsB = 140 dg13_Y_pointsA = 870 dg13_Y_pointsB = 520 dg14_X_pointsA = 400 dg14_X_pointsB = 690 dg14_Y_pointsA = 260 dg14_Y_pointsB = 1050 dg15_X_pointsA = 350 dg15_X_pointsB = 680 dg15_Y_pointsA = 310 dg15_Y_pointsB = 1060 dg16_X_pointsA = 950 dg16_X_pointsB = 510 dg16_Y_pointsA = 790 dg16_Y_pointsB = 150 dg17_X_pointsA = 910 dg17_X_pointsB = 520 dg17_Y_pointsA = 830 dg17_Y_pointsB = 140 dg18_X_pointsA = 390 dg18_X_pointsB = 1050 dg18_Y_pointsA = 270 dg18_Y_pointsB = 690 dg19_X_pointsA = 330 dg19_X_pointsB = 680 dg19_Y_pointsA = 330 dg19_Y_pointsB = 1060 dg20_X_pointsA = 890 dg20_X_pointsB = 140 dg20_Y_pointsA = 850 dg20_Y_pointsB = 520 dg21_X_pointsA = 410 dg21_X_pointsB = 1050 dg21_Y_pointsA = 250 dg21_Y_pointsB = 690 dg22_X_pointsA = 1050 dg22_X_pointsB = 270 dg22_Y_pointsA = 690 dg22_Y_pointsB = 390 dg23_X_pointsA = 520 dg23_X_pointsB = 870 dg23_Y_pointsA = 140 dg23_Y_pointsB = 870 dg24_X_pointsA = 890 dg24_X_pointsB = 520 dg24_Y_pointsA = 850 dg24_Y_pointsB = 140 dg25_X_pointsA = 510 dg25_X_pointsB = 810 dg25_Y_pointsA = 150 dg25_Y_pointsB = 930 dg26_X_pointsA = 960 dg26_X_pointsB = 500 dg26_Y_pointsA = 780 dg26_Y_pointsB = 160 dg27_X_pointsA = 620 dg27_X_pointsB = 790 dg27_Y_pointsA = 580 dg27_Y_pointsB = 410 dg28_X_pointsA = 670 dg28_X_pointsB = 420 dg28_Y_pointsA = 530 dg28_Y_pointsB = 780 dg29_X_pointsA = 720 dg29_X_pointsB = 750 dg29_Y_pointsA = 480 dg29_Y_pointsB = 450 dg30_X_pointsA = 700 dg30_X_pointsB = 760 dg30_Y_pointsA = 500 dg30_Y_pointsB = 440 dg31_X_pointsA = 680 dg31_X_pointsB = 780 dg31_Y_pointsA = 520 dg31_Y_pointsB = 420 dg32_X_pointsA = 740 dg32_X_pointsB = 460 dg32_Y_pointsA = 460 dg32_Y_pointsB = 740 dg33_X_pointsA = 620 dg33_X_pointsB = 410 dg33_Y_pointsA = 580 dg33_Y_pointsB = 790 dg34_X_pointsA = 790 dg34_X_pointsB = 600 dg34_Y_pointsA = 410 dg34_Y_pointsB = 600 dg35_X_pointsA = 660 dg35_X_pointsB = 780 dg35_Y_pointsA = 540 dg35_Y_pointsB = 420 dg36_X_pointsA = 690 dg36_X_pointsB = 770 dg36_Y_pointsA = 510 dg36_Y_pointsB = 430 dg37_X_pointsA = 600 dg37_X_pointsB = 410 dg37_Y_pointsA = 600 dg37_Y_pointsB = 790 dg38_X_pointsA = 640 dg38_X_pointsB = 790 dg38_Y_pointsA = 560 dg38_Y_pointsB = 410 dg39_X_pointsA = 780 dg39_X_pointsB = 540 dg39_Y_pointsA = 420 dg39_Y_pointsB = 660 class Subsession(BaseSubsession): def creating_session(self): if self.round_number == 1: for p in self.get_players(): # round_numbers = list(range(1, Constants.num_rounds)) round_numbers = list(range(1, Constants.num_rounds + 1)) random.shuffle(round_numbers) p.participant.vars['task_rounds'] = dict(zip(Constants.tasks, round_numbers)) p.participant.vars['task_rounds_bis'] = json.dumps(dict(zip(Constants.tasks, round_numbers))) class Group(BaseGroup): pass class Player(BasePlayer): part_label = models.StringField() decision_1 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_2 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_3 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_4 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_5 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_6 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_7 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_8 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_9 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_10 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_11 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_12 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_13 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_14 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_15 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_16 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_17 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_18 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_19 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_20 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_21 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_22 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_23 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_24 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_25 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_26 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_27 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_28 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_29 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_30 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_31 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_32 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_33 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_34 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_35 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_36 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_37 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_38 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect) decision_39 = models.StringField(choices=[['X', 'X'], ['Y', 'Y']], doc="""This player's decision""", widget=widgets.RadioSelect)