from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random from random import randint author = 'Castagnetti_Sharma' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'Ex_mainexperiment_instructions2' players_per_group = 2 num_rounds = 1 tasknumber = 1 class Subsession (BaseSubsession): def before_session_starts(self): if self.round_number ==1: for p in self.get_players(): p.x3 = random.randint(0, 14) if self.round_number ==1: for p in self.get_players(): p.xp = random.randint(0, 100) def set_rand_agent(self): players = self.get_players() return [p.participant.id_in_session for p in players if p.id_in_group==2] #def set_rand_agent_new(self): #players = self.set_rand_agent() # p2 = self.get_player_by_id(2) #return [p for p in players if not p == self.p2.participant.id_in_session] def creating_session(self): for g in self.get_groups(): p2 = g.get_player_by_id(2) others = [x for x in self.set_rand_agent() if p2.participant.id_in_session!=x] g.rand_agent = random.choice(others) def rand_payoff_agent1(self): p2 = [p for p in self.get_players() if p.id_in_group == 2 ] for x in p2: all_groups = self.get_groups() match = [g for g in all_groups if x.participant.id_in_session==g.rand_agent] x.final_pay_ran = sum([g.random_payoff for g in match]) or 0 class Group(BaseGroup): def set_payoff(self): if self.round_number == 1: p1 = self.get_player_by_id(1) p2 = self.get_player_by_id(2) p1.payoff = p2.profitP p2.payoff = p1.Decider_pay1 def set_beliefs(self): if self.round_number == 1: p1 = self.get_player_by_id(1) p2 = self.get_player_by_id(2) p1.correctQ = p2.total def ran_pay(self): p1 = self.get_player_by_id(1) return p1.Decider_pay2 def ran_pay_final(self): if self.round_number == 1: self.random_payoff=self.ran_pay() rand_agent = models.IntegerField() class Player (BasePlayer): def role(self): if self.id_in_group == 1: return 'Decider' if self.id_in_group == 2: return 'Performer' PracticeRaven = models.IntegerField ( choices=[1, 2, 3, 4, 5, 6, 7,8] )