from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random import csv import numpy doc = """ This is a one-shot "Prisoner's Dilemma". Two players are asked separately whether they want to cooperate or defect. Their choices directly determine the payoffs. """ class Constants(BaseConstants): name_in_url = 'strategic_draft1e' 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) rounds_with_guess = [1, 5, 6, 10] right_guess_payoff = "2 Euros" conversion_rate = 0.015 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): pass 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() decision_guess_task1_r1 = models.IntegerField() decision_guess_task1_r5 = models.IntegerField() decision_guess_task2_m1_r1 = models.IntegerField() decision_guess_task2_m5_r1 = models.IntegerField() cooprate_task1_r1 = models.IntegerField() cooprate_task1_r5 = models.IntegerField() cooprate_task2_m1_r1 = models.IntegerField() cooprate_task2_m5_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() 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() 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() randomly_selected_round = models.IntegerField() round_with_guess = models.IntegerField() payoff_int = models.IntegerField() payoff_eur = models.FloatField() payoff_eur_to_show = models.FloatField() cooprate_task1_r1_class = models.IntegerField() cooprate_task1_r5_class = models.IntegerField() cooprate_task2_m1_r1_class = models.IntegerField() cooprate_task2_m5_r1_class = models.IntegerField() decision_guess_task1_r1_premium = models.IntegerField() decision_guess_task1_r5_premium = models.IntegerField() decision_guess_task2_m1_r1_premium = models.IntegerField() decision_guess_task2_m5_r1_premium = models.IntegerField() decision_guess_premium = models.IntegerField() payoff_final = models.FloatField() payoff_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'])