from ._builtin import Page, WaitPage from otree.api import Currency as c, currency_range from .models import Constants class ResultsWaitPage(WaitPage): #after_all_players_arrive = 'random_round' wait_for_all_groups = True class Results(Page): def vars_for_template(self): print(self.participant.vars) self.player.id_random = int(self.participant.vars['id_random']) self.player.supergroup_task1 = str(self.participant.vars['supergroup_task1']) self.player.supergroup_task2 = str(self.participant.vars['supergroup_task2']) self.player.decision_guess_task1_r1 = int(self.participant.vars['decision_guess_task1_r1']) self.player.decision_guess_task1_r5 = int(self.participant.vars['decision_guess_task1_r5']) self.player.cooprate_task1_r1 = int(self.participant.vars['cooprate_task1_r1']) self.player.cooprate_task1_r5 = int(self.participant.vars['cooprate_task1_r5']) self.player.payoff_task1_r1_int = int(self.participant.vars['payoff_task1_r1_int']) self.player.payoff_task1_r2_int = int(self.participant.vars['payoff_task1_r2_int']) self.player.payoff_task1_r3_int = int(self.participant.vars['payoff_task1_r3_int']) self.player.payoff_task1_r4_int = int(self.participant.vars['payoff_task1_r4_int']) self.player.payoff_task1_r5_int = int(self.participant.vars['payoff_task1_r5_int']) self.player.decision_guess_task2_m1_r1 = self.participant.vars['decision_guess_task2_m1_r1'] self.player.decision_guess_task2_m5_r1 = self.participant.vars['decision_guess_task2_m5_r1'] self.player.cooprate_task2_m1_r1 = self.player.participant.vars['cooprate_task2_m1_r1'] self.player.cooprate_task2_m5_r1 = self.player.participant.vars['cooprate_task2_m5_r1'] self.player.cum_payoff_task2_int_m1 = self.player.participant.vars['cum_payoff_task2_int_m1'] self.player.cum_payoff_task2_int_m2 = self.player.participant.vars['cum_payoff_task2_int_m2'] self.player.cum_payoff_task2_int_m3 = self.player.participant.vars['cum_payoff_task2_int_m3'] self.player.cum_payoff_task2_int_m4 = self.player.participant.vars['cum_payoff_task2_int_m4'] self.player.cum_payoff_task2_int_m5 = self.player.participant.vars['cum_payoff_task2_int_m5'] self.player.task2_m1_length = self.player.participant.vars['task2_m1_length'] self.player.task2_m2_length = self.player.participant.vars['task2_m2_length'] self.player.task2_m3_length = self.player.participant.vars['task2_m3_length'] self.player.task2_m4_length = self.player.participant.vars['task2_m4_length'] self.player.task2_m5_length = self.player.participant.vars['task2_m5_length'] #self.player.decision_task1_r1 = int(self.participant.vars['decision_task1_r1']) # self.player.decision_task1_r2 = int(self.participant.vars['decision_task1_r2']) # self.player.decision_task1_r3 = int(self.participant.vars['decision_task1_r3']) # self.player.decision_task1_r4 = int(self.participant.vars['decision_task1_r4']) # self.player.decision_task1_r5 = int(self.participant.vars['decision_task1_r5']) # self.player.decision_task1_type_r1 = str(self.participant.vars['decision_task1_type_r1']) # self.player.decision_task1_type_r2 = str(self.participant.vars['decision_task1_type_r2']) # self.player.decision_task1_type_r3 = str(self.participant.vars['decision_task1_type_r3']) # self.player.decision_task1_type_r4 = str(self.participant.vars['decision_task1_type_r4']) # self.player.decision_task1_type_r5 = str(self.participant.vars['decision_task1_type_r5']) # self.player.cooprate_task1_r2 = int(self.participant.vars['cooprate_task1_r2']) # self.player.cooprate_task1_r3 = int(self.participant.vars['cooprate_task1_r3']) # self.player.cooprate_task1_r4 = int(self.participant.vars['cooprate_task1_r4']) if Constants.randomly_selected_round == 1: self.player.payoff_int = self.player.payoff_task1_r1_int if Constants.randomly_selected_round == 2: self.player.payoff_int = self.player.payoff_task1_r2_int if Constants.randomly_selected_round == 3: self.player.payoff_int = self.player.payoff_task1_r3_int if Constants.randomly_selected_round == 4: self.player.payoff_int = self.player.payoff_task1_r4_int if Constants.randomly_selected_round == 5: self.player.payoff_int = self.player.payoff_task1_r5_int if Constants.randomly_selected_round == 6: self.player.payoff_int = self.player.cum_payoff_task2_int_m1 if Constants.randomly_selected_round == 7: self.player.payoff_int = self.player.cum_payoff_task2_int_m2 if Constants.randomly_selected_round == 8: self.player.payoff_int = self.player.cum_payoff_task2_int_m3 if Constants.randomly_selected_round == 9: self.player.payoff_int = self.player.cum_payoff_task2_int_m4 if Constants.randomly_selected_round == 10: self.player.payoff_int = self.player.cum_payoff_task2_int_m5 self.participant.vars['payoff_int'] = self.player.payoff_int self.player.randomly_selected_round = Constants.randomly_selected_round self.player.payoff_eur = self.player.payoff_int*Constants.conversion_rate self.player.payoff_eur_to_show = round(self.player.payoff_eur, ndigits=2) if self.player.cooprate_task1_r1 < 21: self.player.cooprate_task1_r1_class = 1 elif self.player.cooprate_task1_r1 > 20 and self.player.cooprate_task1_r1 < 41: self.player.cooprate_task1_r1_class = 2 elif self.player.cooprate_task1_r1 > 40 and self.player.cooprate_task1_r1 < 61: self.player.cooprate_task1_r1_class = 3 elif self.player.cooprate_task1_r1 > 60 and self.player.cooprate_task1_r1 < 81: self.player.cooprate_task1_r1_class = 4 else: self.player.cooprate_task1_r1_class = 5 if self.player.cooprate_task1_r5 < 21: self.player.cooprate_task1_r5_class = 1 elif self.player.cooprate_task1_r5 > 20 and self.player.cooprate_task1_r5 < 41: self.player.cooprate_task1_r5_class = 2 elif self.player.cooprate_task1_r5 > 40 and self.player.cooprate_task1_r5 < 61: self.player.cooprate_task1_r5_class = 3 elif self.player.cooprate_task1_r5 > 60 and self.player.cooprate_task1_r5 < 81: self.player.cooprate_task1_r5_class = 4 else: self.player.cooprate_task1_r5_class = 5 if self.player.cooprate_task2_m1_r1 < 21: self.player.cooprate_task2_m1_r1_class = 1 elif self.player.cooprate_task2_m1_r1 > 20 and self.player.cooprate_task2_m1_r1 < 41: self.player.cooprate_task2_m1_r1_class = 2 elif self.player.cooprate_task2_m1_r1 > 40 and self.player.cooprate_task2_m1_r1 < 61: self.player.cooprate_task2_m1_r1_class = 3 elif self.player.cooprate_task2_m1_r1 > 60 and self.player.cooprate_task2_m1_r1 < 81: self.player.cooprate_task2_m1_r1_class = 4 else: self.player.cooprate_task2_m1_r1_class = 5 if self.player.cooprate_task2_m5_r1 < 21: self.player.cooprate_task2_m5_r1_class = 1 elif self.player.cooprate_task2_m5_r1 > 20 and self.player.cooprate_task2_m5_r1 < 41: self.player.cooprate_task2_m5_r1_class = 2 elif self.player.cooprate_task2_m5_r1 > 40 and self.player.cooprate_task2_m5_r1 < 61: self.player.cooprate_task2_m5_r1_class = 3 elif self.player.cooprate_task2_m5_r1 > 60 and self.player.cooprate_task2_m5_r1 < 81: self.player.cooprate_task2_m5_r1_class = 4 else: self.player.cooprate_task2_m5_r1_class = 5 if self.player.decision_guess_task1_r1 == self.player.cooprate_task1_r1_class: self.player.decision_guess_task1_r1_premium = 1 else: self.player.decision_guess_task1_r1_premium = 0 if self.player.decision_guess_task1_r5 == self.player.cooprate_task1_r5_class: self.player.decision_guess_task1_r5_premium = 1 else: self.player.decision_guess_task1_r5_premium = 0 if self.player.decision_guess_task2_m1_r1 == self.player.cooprate_task2_m1_r1_class: self.player.decision_guess_task2_m1_r1_premium = 1 else: self.player.decision_guess_task2_m1_r1_premium = 0 if self.player.decision_guess_task2_m5_r1 == self.player.cooprate_task2_m5_r1_class: self.player.decision_guess_task2_m5_r1_premium = 1 else: self.player.decision_guess_task2_m5_r1_premium = 0 if self.player.randomly_selected_round == 1: self.player.decision_guess_premium = self.player.decision_guess_task1_r1_premium elif self.player.randomly_selected_round == 5: self.player.decision_guess_premium = self.player.decision_guess_task1_r5_premium elif self.player.randomly_selected_round == 6: self.player.decision_guess_premium = self.player.decision_guess_task2_m1_r1_premium elif self.player.randomly_selected_round == 10: self.player.decision_guess_premium = self.player.decision_guess_task2_m5_r1_premium else: self.player.decision_guess_premium = 0 self.player.payoff_final = self.player.payoff_eur + self.player.decision_guess_premium*2 self.player.payoff_final_to_show = round(self.player.payoff_final, ndigits=2) self.participant.vars['payoff_final_PD'] = self.player.payoff_final if self.player.randomly_selected_round in Constants.rounds_with_guess: self.player.round_with_guess = 1 print(self.participant.vars) return {'random_id': self.player.id_random, 'payoff_int': self.player.payoff_int, 'randomly_selected_round': self.player.randomly_selected_round, 'decision_guess_premium': self.player.decision_guess_premium, 'payoff_eur': self.player.payoff_eur, 'payoff_eur_to_show': self.player.payoff_eur_to_show, 'payoff_final': self.player.payoff_final, 'payoff_final_to_show': self.player.payoff_final_to_show , 'round_with_guess': self.player.round_with_guess, 'right_guess_payoff': Constants.right_guess_payoff, 'n_supergames_task1': Constants.n_supergames_task1, 'n_selected_match_task2': Constants.n_selected_match_task2 } #def after_all_players_arrive(self): #self.player.set_payoff() # def after_all_players_arrive(self): # self.player.set_payoff() #def vars_for_template(self): # return dict(payoff_guess_task=self.player.payoff_guess, # right_guess= self.player.decision_guess_r1 == self.player.coop_rate_r1, # wrong_guess=self.player.decision_guess_r1 != self.player.coop_rate_r1, # ) # def after_all_players_arrive(self): # for g in self.subsession.get_groups(): # for p in g.get_players(): # round_to_pay = random.randint(1,2) # where 4 is your total number of apps, dont forget to 'import random' with the other import statements at the top of the page # if round_to_pay == 1: # p.player.payoff = p.participant.vars.get('decision_r1', 0) # if round_to_pay == 2: # p.player.payoff = p.participant.vars.get('decision_r2', 0) page_sequence = [ ResultsWaitPage, Results ]