from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'SSM' players_per_group = 2 num_rounds = 1 instructions_slider = 'SSM/SliderInstructions.html' instructions = 'SSM/Instructions.html' class Subsession(BaseSubsession): random_allocation_1 = models.IntegerField() random_allocation_2 = models.IntegerField() random_allocation_3 = models.IntegerField() random_allocation_4 = models.IntegerField() random_allocation_5 = models.IntegerField() random_allocation_6 = models.IntegerField() def creating_session(self): self.random_allocation_1 = 1 self.random_allocation_2 = 2 self.random_allocation_3 = 3 self.random_allocation_4 = 4 self.random_allocation_5 = 5 self.random_allocation_6 = 6 class Group(BaseGroup): def set_payoffs(self): p1 = self.get_player_by_id(1) p2 = self.get_player_by_id(2) # p1.svo_allocation = 85 # p2.svo_allocation = 85 if self.subsession.random_allocation_1 == 1: if p1.slider1 == 1: p1.payoff += 85 p2.payoff += 85 elif p1.slider1 == 2: p1.payoff += 85 p2.payoff += 68 elif p1.slider1 == 3: p1.payoff += 85 p2.payoff += 50 elif p1.slider1 == 4: p1.payoff += 85 p2.payoff += 33 else: p1.payoff += 85 p2.payoff += 15 if self.subsession.random_allocation_2 == 2: if p1.slider2 == 1: p1.payoff += 85 p2.payoff += 15 elif p1.slider2 == 2: p1.payoff += 89 p2.payoff += 24 elif p1.slider2 == 3: p1.payoff += 93 p2.payoff += 33 elif p1.slider2 == 4: p1.payoff += 96 p2.payoff += 41 else: p1.payoff += 100 p2.payoff += 50 if self.subsession.random_allocation_3 == 3: if p1.slider3 == 1: p1.payoff += 50 p2.payoff += 100 elif p1.slider3 == 2: p1.payoff += 59 p2.payoff += 96 elif p1.slider3 == 3: p1.payoff += 68 p2.payoff += 93 elif p1.slider3 == 4: p1.payoff += 76 p2.payoff += 89 else: p1.payoff += 85 p2.payoff += 85 if self.subsession.random_allocation_4 == 4: if p1.slider4 == 1: p1.payoff += 50 p2.payoff += 100 elif p1.slider4 == 2: p1.payoff += 59 p2.payoff += 79 elif p1.slider4 == 3: p1.payoff += 68 p2.payoff += 58 elif p1.slider4 == 4: p1.payoff += 76 p2.payoff += 36 else: p1.payoff += 85 p2.payoff += 15 if self.subsession.random_allocation_5 == 5: if p1.slider5 == 1: p1.payoff += 100 p2.payoff += 50 elif p1.slider5 == 2: p1.payoff += 88 p2.payoff += 63 elif p1.slider5 == 3: p1.payoff += 75 p2.payoff += 75 elif p1.slider5 == 4: p1.payoff += 63 p2.payoff += 88 else: p1.payoff += 50 p2.payoff += 100 if self.subsession.random_allocation_6 == 6: if p1.slider6 == 1: p1.payoff += 100 p2.payoff += 50 elif p1.slider6 == 2: p1.payoff += 96 p2.payoff += 59 elif p1.slider6 == 3: p1.payoff += 93 p2.payoff += 68 elif p1.slider6 == 4: p1.payoff += 89 p2.payoff += 76 else: p1.payoff += 85 p2.payoff += 85 class Player(BasePlayer): slider1 = models.FloatField(choices=[[1, '(85, 85)'], [2, '(85, 68)'], [3, '(85, 50)'], [4, '(85, 33)'], [5, '(85, 15)']],) slider2 = models.FloatField(choices=[[1, '(85, 15)'], [2, '(89, 24)'], [3, '(93, 33)'], [4, '(96, 41)'], [5, '(100, 50)']],) slider3 = models.FloatField(choices=[[1, '(50, 100)'], [2, '(59, 96)'], [3, '(68, 93)'], [4, '(76, 89)'], [5, '(85, 85)']]) slider4 = models.FloatField(choices=[[1, '(50, 100)'], [2, '(59, 79)'], [3, '(68, 58)'], [4, '(76, 36)'], [5, '(85, 15)']]) slider5 = models.FloatField(choices=[[1, '(100, 50)'], [2, '(88, 63)'], [3, '(75, 75)'], [4, '(63, 88)'], [5, '(50, 100)']]) slider6 = models.FloatField(choices=[[1, '(100, 50)'], [2, '(96, 59)'], [3, '(93, 68)'], [4, '(89, 76)'], [5, '(85, 85)']]) slider_angle = models.DecimalField(decimal_places=2, max_digits=5) slider_classification = models.CharField()