from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'exercise_rounds' players_per_group = 3 num_rounds = 3 class Subsession(BaseSubsession): def creating_session(self): import random if self.round_number == 1: for p in self.get_players(): symbols = ['A', 'B', 'C', 'D', 'E', 'F'] random.shuffle(symbols) random_sym = symbols[:] p.participant.vars['random'] = ''.join(random_sym) for p in self.get_players(): p.State_ball = random.randint(1, 3) p.First_state = random.randint(1, 3) p.Second_state = random.randint(1, 3) p.First_action = random.randint(1, 3) p.Second_action = random.randint(1, 3) class Group(BaseGroup): pass class Player(BasePlayer): State_ball = models.IntegerField() First_state = models.IntegerField() Second_state = models.IntegerField() First_action = models.IntegerField() Second_action = models.IntegerField() Message1 = models.StringField() Message2 = models.StringField() Message3 = models.StringField() def start(self): if self.round_number > 1: self.Message1 = self.in_round(self.round_number - 1).Message1 self.Message2 = self.in_round(self.round_number - 1).Message2 self.Message3 = self.in_round(self.round_number - 1).Message3 Action_ball_1 = models.IntegerField(blank=True) Action_ball_2 = models.IntegerField(blank=True) Message = models.StringField() my_trans_message = models.StringField() Match = models.IntegerField(initial=0) def my_trans_dict(self): symbols = ['A', 'B', 'C', 'D', 'E', 'F'] my_random = list(self.participant.vars['random']) mydictionary = dict(zip(my_random, symbols)) return mydictionary def my_trans_message(self): mydict = self.my_trans_dict() words = list(self.Message) trans = [mydict.get(w) for w in words] my_trans_message = ''.join(trans) return my_trans_message def nickname(self): if self.id_in_group == 1: nickname = "成員甲" elif self.id_in_group == 2: nickname = "成員乙" else: nickname = "成員丙" return nickname def first_nickname(self): if self.id_in_group == 1: nickname = "電腦乙" else: nickname = "電腦甲" return nickname def second_nickname(self): if self.id_in_group == 3: nickname = "電腦乙" else: nickname = "電腦丙" return nickname