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 = 'testNoI' players_per_group = 4 num_rounds = 8 base_payment = c(5) divider_both_enter = 3 payoff_exit = 0 class Subsession(BaseSubsession): def creating_session(self): if self.round_number % 4 == 1 and self.round_number != 1: self.group_randomly() elif self.round_number % 4 == 2: self.group_like_round(self.round_number-1) elif self.round_number % 4 == 3: self.group_like_round(self.round_number-2) elif self.round_number % 4 == 0: self.group_like_round(self.round_number-3) if self.round_number == Constants.num_rounds: paying_game = random.randint(1, Constants.num_rounds/4) self.session.vars['paying_game'] = paying_game class Group(BaseGroup): pass class Player(BasePlayer): def set_random_number(selfs): return random.randint(1,5) random_number = models.IntegerField() teammate_random_number = models.IntegerField() point = models.FloatField() total_point = models.FloatField() payment = models.CurrencyField() # actual payment given out venmoID = models.StringField(label='Venmo ID') # for receipt signature_receipt = models.StringField(label='Name') # for receipt address = models.LongStringField(label='Address') # for receipt studentID = models.IntegerField(label='Student ID') # for receipt day_receipt = models.StringField(label="Today's date (MM/DD/YYYY)") # for receipt individual_comp_result = models.StringField() team_comp_result = models.StringField() enter1 = models.BooleanField(label='Choose your action when your random number is 1', choices=[ [True, 'A'], [False, 'B'] ]) enter2 = models.BooleanField(label='Choose your action when your random number is 2', choices=[ [True, 'A'], [False, 'B'] ]) enter3 = models.BooleanField(label='Choose your action when your random number is 3', choices=[ [True, 'A'], [False, 'B'] ]) enter4 = models.BooleanField(label='Choose your action when your random number is 4', choices=[ [True, 'A'], [False, 'B'] ]) enter5 = models.BooleanField(label='Choose your action when your random number is 5', choices=[ [True, 'A'], [False, 'B'] ]) teammate_enter1 = models.BooleanField() teammate_enter2 = models.BooleanField() teammate_enter3 = models.BooleanField() teammate_enter4 = models.BooleanField() teammate_enter5 = models.BooleanField() enter = models.BooleanField() teammate_enter = models.BooleanField() signature_consent = models.StringField(label='Name') day_consent = models.StringField(label='Date and time')