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 = 'exchange_effort' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): def before_session_starts(self): for p in self.get_players(): p.matrix = 10 p.random_group = random.choice(['Control', 'Treatment']) if p.random_group == "Control": p.control_group = random.randint(1, 2) else: p.treatment_group = random.randint(1, 2) class Group(BaseGroup): pass class Player(BasePlayer): random_group = models.StringField() control_group = models.IntegerField() treatment_group = models.IntegerField() def set_payoffs(self): if self.task_1 == self.correct_task_1: self.points += 1 if self.task_2 == self.correct_task_2: self.points += 1 if self.task_3 == self.correct_task_3: self.points += 1 if self.task_4 == self.correct_task_4: self.points += 1 if self.task_5 == self.correct_task_5: self.points += 1 if self.task_6 == self.correct_task_6: self.points += 1 if self.task_7 == self.correct_task_7: self.points += 1 if self.task_8 == self.correct_task_8: self.points += 1 if self.task_9 == self.correct_task_9: self.points += 1 if self.task_10 == self.correct_task_10: self.points += 1 self.correct_counting = self.points points = models.IntegerField(default=0) matrix = models.IntegerField(default=14) task_1 = models.IntegerField(min=0, max=256) correct_task_1 = models.IntegerField(min=0, max=256) task_2 = models.IntegerField(min=0, max=256) correct_task_2 = models.IntegerField(min=0, max=256) task_3 = models.IntegerField(min=0, max=256) correct_task_3 = models.IntegerField(min=0, max=256) task_4 = models.IntegerField(min=0, max=256) correct_task_4 = models.IntegerField(min=0, max=256) task_5 = models.IntegerField(min=0, max=256) correct_task_5 = models.IntegerField(min=0, max=256) task_6 = models.IntegerField(min=0, max=256) correct_task_6 = models.IntegerField(min=0, max=256) task_7 = models.IntegerField(min=0, max=256) correct_task_7 = models.IntegerField(min=0, max=256) task_8 = models.IntegerField(min=0, max=256) correct_task_8 = models.IntegerField(min=0, max=256) task_9 = models.IntegerField(min=0, max=256) correct_task_9 = models.IntegerField(min=0, max=256) task_10 = models.IntegerField(min=0, max=256) correct_task_10 = models.IntegerField(min=0, max=256) correct_counting = models.IntegerField(initial=0)