from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) author = 'Žan Mlakar' doc = """ Master's thesis experiment - Online condition version """ class Constants(BaseConstants): name_in_url = 'thesismainexp1' players_per_group = 3 num_rounds = 24 class Subsession(BaseSubsession): def creating_session(self): print('Creating session', self.round_number) self.session.vars['max_rounds'] = 24 class Group(BaseGroup): def chosen_option(self): for p in self.get_players(): if p.chosen_name == 'Tao': p.chose_tao = 1 else: p.chose_eta = 1 def same_choice(self): print('Comparing choices ...') total_choices = sum([p.chose_tao for p in self.get_players()]) if total_choices == 0 or total_choices == Constants.players_per_group: print('Choices are the same') self.session.vars['max_rounds'] = self.subsession.round_number else: print('Choices are different') def payoff_decrease(self): print('Calculating the group payoff left ...') for p in self.get_players(): p.payoff_left = (240 - (self.subsession.round_number*10)) class Player(BasePlayer): chosen_name = models.StringField( choices=['Tao', 'Eta'], widget=widgets.RadioSelectHorizontal ) chose_eta = models.IntegerField(initial=0) chose_tao = models.IntegerField(initial=0) payoff_left = models.IntegerField(initial=240)