from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random import csv import numpy doc = """ Task 1 - CQ: Instructions and Control Questions before Task 1: the one-shot "Prisoner's Dilemma" (unconditional and conditional choices). """ class Constants(BaseConstants): name_in_url = 'code_task1_CQ_Dorder' players_per_group = 2 players_per_supergroup = 4 num_rounds = 1 show_up_fee = "5" other_players_in_group = 3 class Subsession(BaseSubsession): task1_order = models.IntegerField() task2_order = models.IntegerField() def creating_session(self): self.task1_order = self.session.config['task1_order'] self.task2_order = self.session.config['task2_order'] for p in self.get_players(): p.conversion_rate = self.session.config['points100_value_eur'] # Payoff from mutual cooperation (Reward Payoff) p.payoff_R = self.session.config['payoff_R'] # Payoff from mutual cooperation (Punishment Payoff) p.payoff_P = self.session.config['payoff_P'] # Payoff from unilateral cooperation (Sucker Payoff) p.payoff_S = self.session.config['payoff_S'] # Payoff from unilateral defection (Temptation Payoff) p.payoff_T = self.session.config['payoff_T'] class Group(BaseGroup): pass class Player(BasePlayer): conversion_rate = models.StringField() payoff_R = models.IntegerField() payoff_P = models.IntegerField() payoff_S = models.IntegerField() payoff_T = models.IntegerField() cq1_n1 = models.IntegerField( label="(1) Quali sono i tuoi guadagni?", min=0, max=100) cq1_n2 = models.IntegerField( label="(2) Quali sono i guadagni del tuo partner?", min=0, max=100) cq1_n3 = models.IntegerField( label="(3) Qual è il guadagno aggregato (ovvero la somma dei guadagni tuoi e dell’altro partecipante)\ - in punti?", min=0, max=150) cq1_n4 = models.IntegerField( label="(4) Quale sarebbe il guadagno aggregato - in punti - se il software avesse invece stabilito che\ la decisione determinate per te fosse quella condizionata e per il tuo partner quella incondizionata?", min=0, max=150) cq1_n5 = models.IntegerField( label="(5) Al termine dello studio verrai pagato per:", choices=[[1, 'Tutte le decisioni prese in questa attività'], [2, 'Solo una decisione presa in questa attività, selezionata casualmente al termine dello studio']], widget=widgets.RadioSelect, ) cq1_n1_solution = models.IntegerField() cq1_n2_solution = models.IntegerField() cq1_n3_solution = models.IntegerField() cq1_n4_solution = models.IntegerField() cq1_n5_solution = models.StringField() cq1_n5_to_show = models.StringField()