from otree.api import * import random doc = """ En esta app el orden es Negative Reciprocity y luego Positive Reciprocity """ class Constants(BaseConstants): name_in_url = 's3' extra_money = 6 players_per_group = None num_rounds = 5 vars_table_1 = [ {'name': 's3t100', 'vals': [20, 0, 10, 0, 0, 0]}, {'name': 's3t101', 'vals': [20, 0, 10, 0, 1, 1]}, {'name': 's3t102', 'vals': [20, 0, 10, 0, 2, 2]}, {'name': 's3t103', 'vals': [20, 0, 10, 0, 3, 3]}, {'name': 's3t104', 'vals': [20, 0, 10, 0, 4, 4]}, {'name': 's3t105', 'vals': [20, 0, 10, 0, 5, 5]}, {'name': 's3t106', 'vals': [20, 0, 10, 0, 6, 6]}, {'name': 's3t107', 'vals': [20, 0, 10, 0, 7, 7]}, {'name': 's3t108', 'vals': [20, 0, 10, 0, 8, 8]}, {'name': 's3t109', 'vals': [20, 0, 10, 0, 9, 9]}, {'name': 's3t110', 'vals': [20, 0, 10, 0, 10, 10]}, {'name': 's3t111', 'vals': [20, 0, 10, 0, 11, 11]}, {'name': 's3t112', 'vals': [20, 0, 10, 0, 12, 12]}, {'name': 's3t113', 'vals': [20, 0, 10, 0, 13, 13]}, {'name': 's3t114', 'vals': [20, 0, 10, 0, 14, 14]}, {'name': 's3t115', 'vals': [20, 0, 10, 0, 15, 15]}, {'name': 's3t116', 'vals': [20, 0, 10, 0, 16, 16]}, {'name': 's3t117', 'vals': [20, 0, 10, 0, 17, 17]}, {'name': 's3t118', 'vals': [20, 0, 10, 0, 18, 18]}, {'name': 's3t119', 'vals': [20, 0, 10, 0, 19, 19]}, {'name': 's3t120', 'vals': [20, 0, 10, 0, 20, 20]}, {'name': 's3t121', 'vals': [20, 0, 10, 0, 21, 21]} ] vars_table_2 = [ {'name': 's3t200', 'vals': [20, 0, 0, 0, 3, -1]}, {'name': 's3t201', 'vals': [20, 0, 1, 1, 4, 0]}, {'name': 's3t202', 'vals': [20, 0, 2, 2, 5, 1]}, {'name': 's3t203', 'vals': [20, 0, 3, 3, 6, 2]}, {'name': 's3t204', 'vals': [20, 0, 4, 4, 7, 3]}, {'name': 's3t205', 'vals': [20, 0, 5, 5, 8, 4]}, {'name': 's3t206', 'vals': [20, 0, 6, 6, 9, 5]}, {'name': 's3t207', 'vals': [20, 0, 7, 7, 10, 6]}, {'name': 's3t208', 'vals': [20, 0, 8, 8, 11, 7]}, {'name': 's3t209', 'vals': [20, 0, 9, 9, 12, 8]}, {'name': 's3t210', 'vals': [20, 0, 10, 10, 13, 9]}, {'name': 's3t211', 'vals': [20, 0, 11, 11, 14, 10]}, {'name': 's3t212', 'vals': [20, 0, 12, 12, 15, 11]}, {'name': 's3t213', 'vals': [20, 0, 13, 13, 16, 12]}, {'name': 's3t214', 'vals': [20, 0, 14, 14, 17, 13]}, {'name': 's3t215', 'vals': [20, 0, 15, 15, 18, 14]}, {'name': 's3t216', 'vals': [20, 0, 16, 16, 19, 15]}, {'name': 's3t217', 'vals': [20, 0, 17, 17, 20, 16]}, {'name': 's3t218', 'vals': [20, 0, 18, 18, 21, 17]}, {'name': 's3t219', 'vals': [20, 0, 19, 19, 22, 18]}, {'name': 's3t220', 'vals': [20, 0, 20, 20, 23, 19]}, {'name': 's3t221', 'vals': [20, 0, 21, 21, 24, 20]} ] dict_table = [ {'name': 's3dt00', 'vals': [20, 0, 0, 0]}, {'name': 's3dt01', 'vals': [20, 0, 1, 1]}, {'name': 's3dt02', 'vals': [20, 0, 2, 2]}, {'name': 's3dt03', 'vals': [20, 0, 3, 3]}, {'name': 's3dt04', 'vals': [20, 0, 4, 4]}, {'name': 's3dt05', 'vals': [20, 0, 5, 5]}, {'name': 's3dt06', 'vals': [20, 0, 6, 6]}, {'name': 's3dt07', 'vals': [20, 0, 7, 7]}, {'name': 's3dt08', 'vals': [20, 0, 8, 8]}, {'name': 's3dt09', 'vals': [20, 0, 9, 9]}, {'name': 's3dt10', 'vals': [20, 0, 10, 10]}, {'name': 's3dt11', 'vals': [20, 0, 11, 11]}, {'name': 's3dt12', 'vals': [20, 0, 12, 12]}, {'name': 's3dt13', 'vals': [20, 0, 13, 13]}, {'name': 's3dt14', 'vals': [20, 0, 14, 14]}, {'name': 's3dt15', 'vals': [20, 0, 15, 15]}, {'name': 's3dt16', 'vals': [20, 0, 16, 16]}, {'name': 's3dt17', 'vals': [20, 0, 17, 17]}, {'name': 's3dt18', 'vals': [20, 0, 18, 18]}, {'name': 's3dt19', 'vals': [20, 0, 19, 19]}, {'name': 's3dt20', 'vals': [20, 0, 20, 20]}, {'name': 's3dt21', '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" punishment_rate = 3 class Subsession(BaseSubsession): pregunta_pago = models.IntegerField() @staticmethod def right_rotate(lst): """ Takes a list (lst) and right rotates it by one position. For example, given lst = [1, 2, 3] right_rotate returns [3, 1, 2]. """ return [lst[-1]] + lst[0:len(lst)-1] @staticmethod def is_even(number): """ This function returns true if number is even, otherwise false is returned. """ # See link for more information on the modulus operator: # https://python-reference.readthedocs.io/en/latest/docs/operators/modulus.html#modulus return number % 2 == 0 # To further understand how creating_sessions works read: # https://otree.readthedocs.io/en/latest/models.html#creating-session @staticmethod def creating_session(subsession): subsession.pregunta_pago = random.randint(0, 21) if subsession.round_number == 1: players = subsession.get_group_matrix()[0] random.shuffle(players) even_players = [p for p in players if is_even(p)] odd_players = [p for p in players if not is_even(p)] subsession.set_group_matrix([[i, j] for i,j in zip(even_players, odd_players)]) else: # See link for more info on the group_like_round function: # https://otree.readthedocs.io/en/latest/multiplayer/groups.html#group-like-round subsession.group_like_round(subsession.round_number - 1) group_matrix = subsession.get_group_matrix() odd_players = [] even_players = [] for group in group_matrix: for player in group: if is_even(player): even_players.append(player) else: odd_players.append(player) # Only the odd players are rotated, then they are paired back with the even # players list. odd_players = right_rotate(odd_players) subsession.set_group_matrix([[i, j] for i,j in zip(even_players, odd_players)]) print(f"Displaying group matrix for round {subsession.round_number}") print(subsession.get_group_matrix()) for p in subsession.get_players(): p.participant.vars['role_s3_' + str(p.round_number)] = p.role p.participant.vars['fila_s3_' + str(p.round_number)] = subsession.pregunta_pago @staticmethod def get_payment_dictator(group): subsession = group.subsession.in_round(1) p1 = group.get_player_by_role('P1').in_round(1) p2 = group.get_player_by_role('P2').in_round(1) if subsession.pregunta_pago > 9: p1.participant.vars['payoff_dg'] = Constants.pago[subsession.pregunta_pago][getattr(p1, 's3dt' + str(subsession.pregunta_pago))]['P1'] p2.participant.vars['payoff_dg'] = Constants.pago[subsession.pregunta_pago][getattr(p1, 's3dt' + str(subsession.pregunta_pago))]['P2'] else: p1.participant.vars['payoff_dg'] = Constants.pago[subsession.pregunta_pago][getattr(p1, 's3dt0' + str(subsession.pregunta_pago))]['P1'] p2.participant.vars['payoff_dg'] = Constants.pago[subsession.pregunta_pago][getattr(p1, 's3dt0' + str(subsession.pregunta_pago))]['P2'] @staticmethod def get_payment_tasks56(group): p1 = group.get_player_by_role("P1") p2 = group.get_player_by_role("P2") subsession_r1 = group.subsession.in_round(2) subsession_r2 = group.subsession.in_round(3) try: p1_dec = int(getattr(p1.in_round(1), 's3dt' + str(subsession_r1.pregunta_pago))) except AttributeError: p1_dec = int(getattr(p1.in_round(1), 's3dt0' + str(subsession_r1.pregunta_pago))) for p in group.get_players(): if p1_dec == 1: p_round_2 = p.in_round(2) try: p_dec = int(getattr(p_round_2, 's3t1' + str(subsession_r1.pregunta_pago))) except AttributeError: p_dec = int(getattr(p_round_2, 's3t10' + str(subsession_r1.pregunta_pago))) if p1_dec == p_dec: p1.participant.vars['payoff_5'] = Constants.extra_money/2 + 20 p2.participant.vars['payoff_5'] = Constants.extra_money/2 + 0 else: p1.participant.vars['payoff_5'] = Constants.extra_money/2 + 10 p2.participant.vars['payoff_5'] = Constants.extra_money/2 #Constants.extra_money_2 - 3 # el segundo número es el descuento #Tal vez guardar en otra variable else: # aca se juga con otra tabla p_round_3 = p.in_round(3) try: p_dec = int(getattr(p_round_3, 's3t2' + str(subsession_r2.pregunta_pago))) except AttributeError: p_dec = int(getattr(p_round_3, 's3t20' + str(subsession_r2.pregunta_pago))) if p1_dec == p_dec: p1.participant.vars['payoff_5'] = Constants.extra_money/2+ subsession_r2.pregunta_pago p2.participant.vars['payoff_5'] = Constants.extra_money/2+subsession_r2.pregunta_pago - 1 # el segundo número es el descuento else: p1.participant.vars['payoff_5'] = Constants.extra_money/2+subsession_r2.pregunta_pago p2.participant.vars['payoff_5'] = Constants.extra_money/2+subsession_r2.pregunta_pago # El descuento solo se da si se escoge esta tarea para pago @staticmethod def get_payment_task78(group): #This function should take into account the round in which the variable is being filled. # All the variables exist for all rounds, but they will be empty in the rounds I don't use them # This function gets the group organization in round 3. Esoge el que haya sido p1 in round 3 p1 = group.get_player_by_role("P1") p2 = group.get_player_by_role("P2") p1_dec = int(p1.in_round(1).s3dt11) p2_round_4 = p2.in_round(4) p2_round_5 = p2.in_round(5) if p1_dec == 1: if p2.in_round(4).s3t3 == 1: p1.participant.vars['payoff_6'] = 20 - p2_round_4.s3t3*Constants.punishment_rate p2.participant.vars['payoff_6'] = Constants.extra_money - p2_round_4.s3t3 else: p1.participant.vars['payoff_6'] = 10 + p2_round_5.s3t4*Constants.punishment_rate p2.participant.vars['payoff_6'] = Constants.extra_money + 10 - p2_round_5.s3t4 else: if p2.in_round(5).s3t4 == 2: p1.participant.vars['payoff_6'] = 10 + p2_round_5.s3t4*Constants.punishment_rate p2.participant.vars['payoff_6'] = Constants.extra_money+ 10 - p2_round_5.s3t4 else: p1.participant.vars['payoff_6'] = 20 - p2_round_4.s3t3*Constants.punishment_rate p2.participant.vars['payoff_6'] = Constants.extra_money - p2_round_4.s3t3 class Group(BaseGroup): pass class Player(BasePlayer): # ############################################################### # # VARIABLES A USARSE EN LA TABLA 1 # ############################################################### # # A -> 1, A2 -> 2 s3t100 = models.IntegerField() s3t101 = models.IntegerField() s3t102 = models.IntegerField() s3t103 = models.IntegerField() s3t104 = models.IntegerField() s3t105 = models.IntegerField() s3t106 = models.IntegerField() s3t107 = models.IntegerField() s3t108 = models.IntegerField() s3t109 = models.IntegerField() s3t110 = models.IntegerField() s3t111 = models.IntegerField() s3t112 = models.IntegerField() s3t113 = models.IntegerField() s3t114 = models.IntegerField() s3t115 = models.IntegerField() s3t116 = models.IntegerField() s3t117 = models.IntegerField() s3t118 = models.IntegerField() s3t119 = models.IntegerField() s3t120 = models.IntegerField() s3t121 = models.IntegerField() # ############################################################### # # ############################################################### # # VARIABLES A USARSE EN LA TABLA 2 # ############################################################### # # B -> 1, B2 -> 2 s3t200 = models.IntegerField() s3t201 = models.IntegerField() s3t202 = models.IntegerField() s3t203 = models.IntegerField() s3t204 = models.IntegerField() s3t205 = models.IntegerField() s3t206 = models.IntegerField() s3t207 = models.IntegerField() s3t208 = models.IntegerField() s3t209 = models.IntegerField() s3t210 = models.IntegerField() s3t211 = models.IntegerField() s3t212 = models.IntegerField() s3t213 = models.IntegerField() s3t214 = models.IntegerField() s3t215 = models.IntegerField() s3t216 = models.IntegerField() s3t217 = models.IntegerField() s3t218 = models.IntegerField() s3t219 = models.IntegerField() s3t220 = models.IntegerField() s3t221 = models.IntegerField() # Dictator table s3dt00 = models.IntegerField() s3dt01 = models.IntegerField() s3dt02 = models.IntegerField() s3dt03 = models.IntegerField() s3dt04 = models.IntegerField() s3dt05 = models.IntegerField() s3dt06 = models.IntegerField() s3dt07 = models.IntegerField() s3dt08 = models.IntegerField() s3dt09 = models.IntegerField() s3dt10 = models.IntegerField() s3dt11 = models.IntegerField() s3dt12 = models.IntegerField() s3dt13 = models.IntegerField() s3dt14 = models.IntegerField() s3dt15 = models.IntegerField() s3dt16 = models.IntegerField() s3dt17 = models.IntegerField() s3dt18 = models.IntegerField() s3dt19 = models.IntegerField() s3dt20 = models.IntegerField() s3dt21 = models.IntegerField() s3t3 = models.IntegerField() s3t4 = models.IntegerField() # PAGES class Instrucciones(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 class dictator_inst(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 class dictator_table(Page): form_model = 'player' form_fields = ['s3dt00', 's3dt01', 's3dt02', 's3dt03', 's3dt04', 's3dt05', 's3dt06', 's3dt07', 's3dt08', 's3dt09', 's3dt10', 's3dt11', 's3dt12', 's3dt13', 's3dt14', 's3dt15', 's3dt16', 's3dt17', 's3dt18', 's3dt19', 's3dt20', 's3dt21'] @staticmethod def vars_for_template(player): return { "vars_table": [ {'name': 's3dt00', 'vals': [20, 0, 0, 0]}, {'name': 's3dt01', 'vals': [20, 0, 1, 1]}, {'name': 's3dt02', 'vals': [20, 0, 2, 2]}, {'name': 's3dt03', 'vals': [20, 0, 3, 3]}, {'name': 's3dt04', 'vals': [20, 0, 4, 4]}, {'name': 's3dt05', 'vals': [20, 0, 5, 5]}, {'name': 's3dt06', 'vals': [20, 0, 6, 6]}, {'name': 's3dt07', 'vals': [20, 0, 7, 7]}, {'name': 's3dt08', 'vals': [20, 0, 8, 8]}, {'name': 's3dt09', 'vals': [20, 0, 9, 9]}, {'name': 's3dt10', 'vals': [20, 0, 10, 10]}, {'name': 's3dt11', 'vals': [20, 0, 11, 11]}, {'name': 's3dt12', 'vals': [20, 0, 12, 12]}, {'name': 's3dt13', 'vals': [20, 0, 13, 13]}, {'name': 's3dt14', 'vals': [20, 0, 14, 14]}, {'name': 's3dt15', 'vals': [20, 0, 15, 15]}, {'name': 's3dt16', 'vals': [20, 0, 16, 16]}, {'name': 's3dt17', 'vals': [20, 0, 17, 17]}, {'name': 's3dt18', 'vals': [20, 0, 18, 18]}, {'name': 's3dt19', 'vals': [20, 0, 19, 19]}, {'name': 's3dt20', 'vals': [20, 0, 20, 20]}, {'name': 's3dt21', 'vals': [20, 0, 21, 21]}] } @staticmethod def is_displayed(player: Player): return player.round_number == 1 class Instrucciones1(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 2 class table1(Page): form_model = 'player' form_fields = ['s3t100', 's3t101', 's3t102', 's3t103', 's3t104', 's3t105', 's3t106', 's3t107', 's3t108', 's3t109', 's3t110', 's3t111', 's3t112', 's3t113', 's3t114', 's3t115', 's3t116', 's3t117', 's3t118', 's3t119', 's3t120', 's3t121'] @staticmethod def vars_for_template(self): return { "vars_table": [ {'name': 's3t100', 'vals': [20, 0, 10, 0, 0, 0]}, {'name': 's3t101', 'vals': [20, 0, 10, 0, 1, 1]}, {'name': 's3t102', 'vals': [20, 0, 10, 0, 2, 2]}, {'name': 's3t103', 'vals': [20, 0, 10, 0, 3, 3]}, {'name': 's3t104', 'vals': [20, 0, 10, 0, 4, 4]}, {'name': 's3t105', 'vals': [20, 0, 10, 0, 5, 5]}, {'name': 's3t106', 'vals': [20, 0, 10, 0, 6, 6]}, {'name': 's3t107', 'vals': [20, 0, 10, 0, 7, 7]}, {'name': 's3t108', 'vals': [20, 0, 10, 0, 8, 8]}, {'name': 's3t109', 'vals': [20, 0, 10, 0, 9, 9]}, {'name': 's3t110', 'vals': [20, 0, 10, 0, 10, 10]}, {'name': 's3t111', 'vals': [20, 0, 10, 0, 11, 11]}, {'name': 's3t112', 'vals': [20, 0, 10, 0, 12, 12]}, {'name': 's3t113', 'vals': [20, 0, 10, 0, 13, 13]}, {'name': 's3t114', 'vals': [20, 0, 10, 0, 14, 14]}, {'name': 's3t115', 'vals': [20, 0, 10, 0, 15, 15]}, {'name': 's3t116', 'vals': [20, 0, 10, 0, 16, 16]}, {'name': 's3t117', 'vals': [20, 0, 10, 0, 17, 17]}, {'name': 's3t118', 'vals': [20, 0, 10, 0, 18, 18]}, {'name': 's3t119', 'vals': [20, 0, 10, 0, 19, 19]}, {'name': 's3t120', 'vals': [20, 0, 10, 0, 20, 20]}, {'name': 's3t121', 'vals': [20, 0, 10, 0, 21, 21]} ] } @staticmethod def is_displayed(player: Player): return player.round_number == 2 class Instrucciones2(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 3 class table2(Page): form_model = 'player' form_fields = ['s3t200', 's3t201', 's3t202', 's3t203', 's3t204', 's3t205', 's3t206', 's3t207', 's3t208', 's3t209', 's3t210', 's3t211', 's3t212', 's3t213', 's3t214', 's3t215', 's3t216', 's3t217', 's3t218', 's3t219', 's3t220', 's3t221'] @staticmethod def vars_for_template(self): return { "vars_table": [ {'name': 's3t200', 'vals': [20, 0, 0, 0, 3, -1]}, {'name': 's3t201', 'vals': [20, 0, 1, 1, 4, 0]}, {'name': 's3t202', 'vals': [20, 0, 2, 2, 5, 1]}, {'name': 's3t203', 'vals': [20, 0, 3, 3, 6, 2]}, {'name': 's3t204', 'vals': [20, 0, 4, 4, 7, 3]}, {'name': 's3t205', 'vals': [20, 0, 5, 5, 8, 4]}, {'name': 's3t206', 'vals': [20, 0, 6, 6, 9, 5]}, {'name': 's3t207', 'vals': [20, 0, 7, 7, 10, 6]}, {'name': 's3t208', 'vals': [20, 0, 8, 8, 11, 7]}, {'name': 's3t209', 'vals': [20, 0, 9, 9, 12, 8]}, {'name': 's3t210', 'vals': [20, 0, 10, 10, 13, 9]}, {'name': 's3t211', 'vals': [20, 0, 11, 11, 14, 10]}, {'name': 's3t212', 'vals': [20, 0, 12, 12, 15, 11]}, {'name': 's3t213', 'vals': [20, 0, 13, 13, 16, 12]}, {'name': 's3t214', 'vals': [20, 0, 14, 14, 17, 13]}, {'name': 's3t215', 'vals': [20, 0, 15, 15, 18, 14]}, {'name': 's3t216', 'vals': [20, 0, 16, 16, 19, 15]}, {'name': 's3t217', 'vals': [20, 0, 17, 17, 20, 16]}, {'name': 's3t218', 'vals': [20, 0, 18, 18, 21, 17]}, {'name': 's3t219', 'vals': [20, 0, 19, 19, 22, 18]}, {'name': 's3t220', 'vals': [20, 0, 20, 20, 23, 19]}, {'name': 's3t221', 'vals': [20, 0, 21, 21, 24, 20]} ]} @staticmethod def is_displayed(player: Player): return player.round_number == 3 class table3(Page): form_model = 'player' form_fields = ['s3t3'] @staticmethod def is_displayed(player: Player): return player.round_number == 4 class table4(Page): form_model = 'player' form_fields = ['s3t4'] @staticmethod def is_displayed(player: Player): return player.round_number == 5 class FinalWait(WaitPage): @staticmethod def after_all_players_arrive(group: Group): get_payment_tasks56(group) get_payment_task78(group) get_payment_dictator(group) @staticmethod def is_displayed(player: Player): return player.round_number == 5 page_sequence = [Instrucciones, dictator_inst, dictator_table, Instrucciones1, table1, Instrucciones2, table2, table3, table4, FinalWait]