from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random import pdb author = 'Avineil Jain' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'game3' players_per_group = 4 num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): def set_payoff(self): crra_dict = {0: (0.77,1000.0), 1:(0.7,0.77), 2: (0.63,0.7), 3: (0.57,0.63), 4: (0.50,0.57), 5: (0.42,0.5), 6: (0.34,0.42), 7: (0.24,0.34), 8: (0.13,0.24), 9: (0.00,0.13), 10: (-0.16,0), 11: (-0.36,-0.16), 12: (-0.61,-0.36), 13: (-0.94,-0.61), 14: (-1.41,-0.94), 15: (-2.11,-1.41), 16: (-1000.0,-2.11)} self.round_selected = random.randint(1,16) field_items = list(self.__dict__.items()) field_dict = {} for item in field_items: if 'choice' in item[0]: field_dict[item[0]] = item[1] self.lower_r, self.upper_r = crra_dict[16] for i in range(1,17): if(field_dict['choice%d'%(i)]=='C'): self.switching_round = i self.lower_r, self.upper_r = crra_dict[i-1] break self.random_toss = int(random.random()<0.5) payoff_dict = {'C': self.round_selected*20, 'D': self.random_toss*400} self.payoff = payoff_dict[field_dict['choice%d'%self.round_selected]] self.participant.vars['game3_payoff'] = int(self.payoff) round_selected = models.IntegerField(initial=0) random_toss = models.IntegerField() switching_round = models.IntegerField(initial=17) lower_r = models.FloatField() upper_r = models.FloatField() choice1 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice2 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice3 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice4 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice5 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice6 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice7 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice8 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice9 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice10 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice11 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice12 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice13 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice14 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice15 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "") choice16 = models.StringField(choices = ['C', 'D'], widget = widgets.RadioSelectHorizontal, label = "")