from otree.api import Currency as c, currency_range from . import pages from ._builtin import Bot from .models import Constants import random class PlayerBot(Bot): def _get_belief_submission_dict(self): belief_objs_by_id = {belief.pk: belief for belief in self.player.belief_set.all()} submission_dict = {} for i in range(len(self.group.get_players()) - 1): submission_dict.update({ 'form-%d-id' % i: list(belief_objs_by_id.values())[0].pk, 'form-%d-value' % i: random.randint(0, 10), }) return submission_dict def play_round(self): # group size and variant if self.round_number == 1: config_group_size = self.session.config.get('group_size', 3) config_persistent = True if self.session.config.get('variant', 'standard') == 'persistent' else False assert config_group_size == len(self.group.get_players()) assert config_persistent == self.subsession.persistent if self.subsession.persistent: assert self.subsession.mpcr_round == self.session.vars["MPCR_TOTAL"] * self.subsession.depreciation_rate # rounds if self.round_number == 1: assert 30 <= self.group.num_rounds <= 40 # page progression if self.round_number == 1: yield pages.BeliefsBeforeFirstRound, self._get_belief_submission_dict() if self.round_number == 11: # 11 is first round with knowledge about who leaves yield pages.Interruption1 yield pages.BeliefsAfterAnnouncement, self._get_belief_submission_dict() if self.round_number == 21: # 21 will be first round with new groups in later experiments yield pages.Interruption2 yield pages.BeliefsAfterChange, self._get_belief_submission_dict() if self.round_number <= self.group.num_rounds: yield pages.GameRound, dict( blue_token_contribution=random.randint(0, 10) ) if self.round_number == 30: # 30 is last guaranteed round of experiment yield pages.Interruption3 yield pages.BeliefsAfterMinRounds, self._get_belief_submission_dict()