from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random import csv import numpy doc = """ Part 2 (e) Results and Payments for the one-shot and the infinitely-repeated PD """ class Constants(BaseConstants): name_in_url = 'part2_e_I' players_per_group = 2 players_per_supergroup = 4 assert players_per_supergroup % players_per_group == 0, \ SUPERGROUP_NUM_ERR num_rounds = 1 supergroup_threshold1 = 4 # To test: randomly_selected_round = 1 randomly_selected_round = random.randint(1, 10) randomly_selected_match = random.randint(1, 10) rounds_with_guess = [1, 5, 10] matches_with_guess = [1, 5, 10] right_guess_payoff = "2 Euro" conversion_rate = 0.02 # n_supergames_task1 = 5 # n_selected_match_task2 = randomly_selected_round - n_supergames_task1 #randomly_selected_round = random.randint(1, 5) # payoff if 1 player defects and the other cooperates""", betray_payoff = c(100) betrayed_payoff = c(10) # payoff if both players cooperate or both defect both_cooperate_payoff = c(73) both_defect_payoff = c(43) print(randomly_selected_round) class Subsession(BaseSubsession): def creating_session(self): for g in self.get_groups(): for p in g.get_players(): p.randomly_selected_round = Constants.randomly_selected_round p.randomly_selected_match = Constants.randomly_selected_match class Group(BaseGroup): pass # def random_round(self): # for p in self.get_players(): # p.random_round() class Player(BasePlayer): supergroup_task1 = models.LongStringField() supergroup_task2 = models.LongStringField() id_random = models.IntegerField() cq2_t1_1 = models.IntegerField() cq2_t1_2 = models.IntegerField() cq2_t1_3 = models.IntegerField() cq2_t1_4 = models.IntegerField() cq2_t1_5 = models.IntegerField() cq2_t1_6 = models.IntegerField() cq2_t1_7 = models.IntegerField() cq2_t2_1 = models.IntegerField() cq2_t2_2 = models.IntegerField() cq2_t2_3 = models.IntegerField() cq2_t2_4 = models.IntegerField() cq2_t2_5 = models.IntegerField() cq2_t2_6 = models.IntegerField() cq2_t2_7 = models.IntegerField() decision_task1_r1 = models.IntegerField() decision_task1_r2 = models.IntegerField() decision_task1_r3 = models.IntegerField() decision_task1_r4 = models.IntegerField() decision_task1_r5 = models.IntegerField() decision_task1_r6 = models.IntegerField() decision_task1_r7 = models.IntegerField() decision_task1_r8 = models.IntegerField() decision_task1_r9 = models.IntegerField() decision_task1_r10 = models.IntegerField() group_id_task1_r1 = models.IntegerField() group_id_task1_r2 = models.IntegerField() group_id_task1_r3 = models.IntegerField() group_id_task1_r4 = models.IntegerField() group_id_task1_r5 = models.IntegerField() group_id_task1_r6 = models.IntegerField() group_id_task1_r7 = models.IntegerField() group_id_task1_r8 = models.IntegerField() group_id_task1_r9 = models.IntegerField() group_id_task1_r10 = models.IntegerField() decision_task2_m1_r1 = models.IntegerField() decision_task2_m2_r1 = models.IntegerField() decision_task2_m3_r1 = models.IntegerField() decision_task2_m4_r1 = models.IntegerField() decision_task2_m5_r1 = models.IntegerField() decision_task2_m6_r1 = models.IntegerField() decision_task2_m7_r1 = models.IntegerField() decision_task2_m8_r1 = models.IntegerField() decision_task2_m9_r1 = models.IntegerField() decision_task2_m10_r1 = models.IntegerField() group_id_task2_m1_r1 = models.IntegerField() group_id_task2_m2_r1 = models.IntegerField() group_id_task2_m3_r1 = models.IntegerField() group_id_task2_m4_r1 = models.IntegerField() group_id_task2_m5_r1 = models.IntegerField() group_id_task2_m6_r1 = models.IntegerField() group_id_task2_m7_r1 = models.IntegerField() group_id_task2_m8_r1 = models.IntegerField() group_id_task2_m9_r1 = models.IntegerField() group_id_task2_m10_r1 = models.IntegerField() decision_guess_task1_r1 = models.IntegerField() decision_guess_task1_r5 = models.IntegerField() decision_guess_task1_r10 = models.IntegerField() decision_guess_task2_m1_r1 = models.IntegerField() decision_guess_task2_m5_r1 = models.IntegerField() decision_guess_task2_m10_r1 = models.IntegerField() # cooprate_task1_r1 = models.IntegerField() # cooprate_task1_r5 = models.IntegerField() # cooprate_task1_r10 = models.IntegerField() # cooprate_task2_m1_r1 = models.IntegerField() # cooprate_task2_m5_r1 = models.IntegerField() # cooprate_task2_m10_r1 = models.IntegerField() payoff_task1_r1_int = models.IntegerField() payoff_task1_r2_int = models.IntegerField() payoff_task1_r3_int = models.IntegerField() payoff_task1_r4_int = models.IntegerField() payoff_task1_r5_int = models.IntegerField() payoff_task1_r6_int = models.IntegerField() payoff_task1_r7_int = models.IntegerField() payoff_task1_r8_int = models.IntegerField() payoff_task1_r9_int = models.IntegerField() payoff_task1_r10_int = models.IntegerField() cum_payoff_task2_int_m1 = models.IntegerField() cum_payoff_task2_int_m2 = models.IntegerField() cum_payoff_task2_int_m3 = models.IntegerField() cum_payoff_task2_int_m4 = models.IntegerField() cum_payoff_task2_int_m5 = models.IntegerField() cum_payoff_task2_int_m6 = models.IntegerField() cum_payoff_task2_int_m7 = models.IntegerField() cum_payoff_task2_int_m8 = models.IntegerField() cum_payoff_task2_int_m9 = models.IntegerField() cum_payoff_task2_int_m10 = models.IntegerField() task2_m1_length = models.IntegerField() task2_m2_length = models.IntegerField() task2_m3_length = models.IntegerField() task2_m4_length = models.IntegerField() task2_m5_length = models.IntegerField() task2_m6_length = models.IntegerField() task2_m7_length = models.IntegerField() task2_m8_length = models.IntegerField() task2_m9_length = models.IntegerField() task2_m10_length = models.IntegerField() randomly_selected_round = models.IntegerField() randomly_selected_match = models.IntegerField() round_with_guess = models.IntegerField() match_with_guess = models.IntegerField() payoff_task1_int = models.IntegerField() payoff_task1_eur = models.FloatField() payoff_task1_eur_to_show = models.FloatField() payoff_task2_int = models.IntegerField() payoff_task2_eur = models.FloatField() payoff_task2_eur_to_show = models.FloatField() # cooprate_task1_r1_class = models.IntegerField() # cooprate_task1_r5_class = models.IntegerField() # cooprate_task1_r10_class = models.IntegerField() # cooprate_task2_m1_r1_class = models.IntegerField() # cooprate_task2_m5_r1_class = models.IntegerField() # cooprate_task2_m10_r1_class = models.IntegerField() total_coop_task1_r1 = models.IntegerField() total_coop_task1_r2 = models.IntegerField() total_coop_task1_r3 = models.IntegerField() total_coop_task1_r4 = models.IntegerField() total_coop_task1_r5 = models.IntegerField() total_coop_task1_r6 = models.IntegerField() total_coop_task1_r7 = models.IntegerField() total_coop_task1_r8 = models.IntegerField() total_coop_task1_r9 = models.IntegerField() total_coop_task1_r10 = models.IntegerField() total_coop_task2_m1_r1 = models.IntegerField() total_coop_task2_m2_r1 = models.IntegerField() total_coop_task2_m3_r1 = models.IntegerField() total_coop_task2_m4_r1 = models.IntegerField() total_coop_task2_m5_r1 = models.IntegerField() total_coop_task2_m6_r1 = models.IntegerField() total_coop_task2_m7_r1 = models.IntegerField() total_coop_task2_m8_r1 = models.IntegerField() total_coop_task2_m9_r1 = models.IntegerField() total_coop_task2_m10_r1 = models.IntegerField() decision_guess_task1_r1_premium = models.IntegerField() decision_guess_task1_r5_premium = models.IntegerField() decision_guess_task1_r10_premium = models.IntegerField() decision_guess_task2_m1_r1_premium = models.IntegerField() decision_guess_task2_m5_r1_premium = models.IntegerField() decision_guess_task2_m10_r1_premium = models.IntegerField() decision_guess_premium_task1 = models.IntegerField() decision_guess_premium_task2 = models.IntegerField() payoff_task1_final = models.FloatField() payoff_task1_final_to_show = models.FloatField() payoff_task2_final = models.FloatField() payoff_task2_final_to_show = models.FloatField() # cooprate_task1_r2 = models.IntegerField() # cooprate_task1_r3 = models.IntegerField() # cooprate_task1_r4 = models.IntegerField() # decision_task1_r1 = models.IntegerField() # decision_task1_r2 = models.IntegerField() # decision_task1_r3 = models.IntegerField() # decision_task1_r4 = models.IntegerField() # decision_task1_r5 = models.IntegerField() # decision_task1_type_r1 = models.StringField() # decision_task1_type_r2 = models.StringField() # decision_task1_type_r3 = models.StringField() # decision_task1_type_r4 = models.StringField() # decision_task1_type_r5 = models.StringField() # def random_round(self): # self.randomly_selected_round = Constants.randomly_selected_round # if self.randomly_selected_round == 1: # self.participant.vars['payoff_int'] = int(self.participant.vars['payoff_task1_r1_int']) # elif self.randomly_selected_round == 2: # self.participant.vars['payoff_int'] = int(self.participant.vars['payoff_task1_r2_int']) # elif self.randomly_selected_round == 3: # self.participant.vars['payoff_int'] = int(self.participant.vars['payoff_task1_r3_int']) # elif self.randomly_selected_round == 4: # self.participant.vars['payoff_int'] = int(self.participant.vars['payoff_task1_r4_int']) # else: # self.participant.vars['payoff_int'] = int(self.participant.vars['payoff_task1_r5_int'])