from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'survey_draft1b' players_per_group = None #num_rounds = 1 tasks = ['DG1', 'DG2', 'DG3', 'DG4', 'DG5', 'DG6', 'DG7', 'DG8', 'DG9', 'DG10'] # 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 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)) 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)