from otree.api import * import random doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 's1_2' players_per_group = 2 num_rounds = 1 vars_table_2 = [ {'name': 's1t200', 'vals': [20, 0, 0, 0]}, {'name': 's1t201', 'vals': [20, 0, 1, 1]}, {'name': 's1t202', 'vals': [20, 0, 2, 2]}, {'name': 's1t203', 'vals': [20, 0, 3, 3]}, {'name': 's1t204', 'vals': [20, 0, 4, 4]}, {'name': 's1t205', 'vals': [20, 0, 5, 5]}, {'name': 's1t206', 'vals': [20, 0, 6, 6]}, {'name': 's1t207', 'vals': [20, 0, 7, 7]}, {'name': 's1t208', 'vals': [20, 0, 8, 8]}, {'name': 's1t209', 'vals': [20, 0, 9, 9]}, {'name': 's1t210', 'vals': [20, 0, 10, 10]}, {'name': 's1t211', 'vals': [20, 0, 11, 11]}, {'name': 's1t212', 'vals': [20, 0, 12, 12]}, {'name': 's1t213', 'vals': [20, 0, 13, 13]}, {'name': 's1t214', 'vals': [20, 0, 14, 14]}, {'name': 's1t215', 'vals': [20, 0, 15, 15]}, {'name': 's1t216', 'vals': [20, 0, 16, 16]}, {'name': 's1t217', 'vals': [20, 0, 17, 17]}, {'name': 's1t218', 'vals': [20, 0, 18, 18]}, {'name': 's1t219', 'vals': [20, 0, 19, 19]}, {'name': 's1t220', 'vals': [20, 0, 20, 20]}, {'name': 's1t221', 'vals': [20, 0, 21, 21]} ] pago = { 0: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 0, 'P2': 0}}, 1: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 1, 'P2': 1}}, 2: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 2, 'P2': 2}}, 3: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 3, 'P2': 3}}, 4: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 4, 'P2': 4}}, 5: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 5, 'P2': 5}}, 6: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 6, 'P2': 6}}, 7: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 7, 'P2': 7}}, 8: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 8, 'P2': 8}}, 9: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 9, 'P2': 9}}, 10: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 10, 'P2': 10}}, 11: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 11, 'P2': 11}}, 12: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 12, 'P2': 12}}, 13: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 13, 'P2': 13}}, 14: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 14, 'P2': 14}}, 15: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 15, 'P2': 15}}, 16: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 16, 'P2': 16}}, 17: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 17, 'P2': 17}}, 18: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 18, 'P2': 18}}, 19: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 19, 'P2': 19}}, 20: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 20, 'P2': 20}}, 21: {1: {'P1': 20, 'P2': 0}, 2: {'P1': 21, 'P2': 21}} } P1_ROLE = "P1" P2_ROLE = "P2" class Subsession(BaseSubsession): pregunta_pago = models.IntegerField() def creating_session(subsession): subsession.pregunta_pago = random.randint(0, 21) for p in subsession.get_players(): p.participant.vars['fila_s1_2'] = subsession.pregunta_pago print(f'The person is {p}\nrole = {p.role}') p.participant.role_s1_2 = p.role class Group(BaseGroup): pass @staticmethod def get_payment(group): subsession = group.subsession p1 = group.get_player_by_role('P1') p2 = group.get_player_by_role('P2') if subsession.pregunta_pago > 9: p1.participant.vars['payoff_2'] = Constants.pago[subsession.pregunta_pago][getattr(p1, 's1t2' + str(subsession.pregunta_pago))]['P1'] p2.participant.vars['payoff_2'] = Constants.pago[subsession.pregunta_pago][getattr(p1, 's1t2' + str(subsession.pregunta_pago))]['P2'] else: p1.participant.vars['payoff_2'] = Constants.pago[subsession.pregunta_pago][getattr(p1, 's1t20' + str(subsession.pregunta_pago))]['P1'] p2.participant.vars['payoff_2'] = Constants.pago[subsession.pregunta_pago][getattr(p1, 's1t20' + str(subsession.pregunta_pago))]['P2'] class Player(BasePlayer): s1t200 = models.IntegerField() s1t201 = models.IntegerField() s1t202 = models.IntegerField() s1t203 = models.IntegerField() s1t204 = models.IntegerField() s1t205 = models.IntegerField() s1t206 = models.IntegerField() s1t207 = models.IntegerField() s1t208 = models.IntegerField() s1t209 = models.IntegerField() s1t210 = models.IntegerField() s1t211 = models.IntegerField() s1t212 = models.IntegerField() s1t213 = models.IntegerField() s1t214 = models.IntegerField() s1t215 = models.IntegerField() s1t216 = models.IntegerField() s1t217 = models.IntegerField() s1t218 = models.IntegerField() s1t219 = models.IntegerField() s1t220 = models.IntegerField() s1t221 = models.IntegerField() # PAGES class Instrucciones2(Page): pass class table2(Page): form_model = 'player' form_fields = ['s1t200', 's1t201', 's1t202', 's1t203', 's1t204', 's1t205', 's1t206', 's1t207', 's1t208', 's1t209', 's1t210', 's1t211', 's1t212', 's1t213', 's1t214', 's1t215', 's1t216', 's1t217', 's1t218', 's1t219', 's1t220', 's1t221'] @staticmethod def vars_for_template(self): return { "vars_table": [ {'name': 's1t200', 'vals': [20, 0, 0, 0]}, {'name': 's1t201', 'vals': [20, 0, 1, 1]}, {'name': 's1t202', 'vals': [20, 0, 2, 2]}, {'name': 's1t203', 'vals': [20, 0, 3, 3]}, {'name': 's1t204', 'vals': [20, 0, 4, 4]}, {'name': 's1t205', 'vals': [20, 0, 5, 5]}, {'name': 's1t206', 'vals': [20, 0, 6, 6]}, {'name': 's1t207', 'vals': [20, 0, 7, 7]}, {'name': 's1t208', 'vals': [20, 0, 8, 8]}, {'name': 's1t209', 'vals': [20, 0, 9, 9]}, {'name': 's1t210', 'vals': [20, 0, 10, 10]}, {'name': 's1t211', 'vals': [20, 0, 11, 11]}, {'name': 's1t212', 'vals': [20, 0, 12, 12]}, {'name': 's1t213', 'vals': [20, 0, 13, 13]}, {'name': 's1t214', 'vals': [20, 0, 14, 14]}, {'name': 's1t215', 'vals': [20, 0, 15, 15]}, {'name': 's1t216', 'vals': [20, 0, 16, 16]}, {'name': 's1t217', 'vals': [20, 0, 17, 17]}, {'name': 's1t218', 'vals': [20, 0, 18, 18]}, {'name': 's1t219', 'vals': [20, 0, 19, 19]}, {'name': 's1t220', 'vals': [20, 0, 20, 20]}, {'name': 's1t221', 'vals': [20, 0, 21, 21]}] } class PaymentWait(WaitPage): @staticmethod def after_all_players_arrive(group: Group): get_payment(group) #subsession = group.subsession #for player in subsession.get_players(): # Save roles # pass page_sequence = [Instrucciones2, table2, PaymentWait]