from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) author = 'sou watamura' doc = """ 独裁者ゲーム """ class Constants(BaseConstants): name_in_url = 'dictator_trial' players_per_group = 2 num_rounds = 6 endowment = c(10) # 提案者の初期保有額は10ポイント A_List=(1,2,2,1,1,2) #A提案する方だよ B_List=(2,1,1,2,2,1) class Subsession(BaseSubsession): def creating_session(self): self.group_randomly(fixed_id_in_group=True) class Group(BaseGroup): # プレイヤーの選択を定義する. ## プレイヤー1の選択は提案額を決める. proposal = models.CurrencyField( choices=currency_range(c(0), c(Constants.endowment), c(1)), label="あなたはいくら相手に渡しますか?", ) proposer_point = models.CurrencyField() # プレイヤー1の利得 accepter_point = models.CurrencyField() # プレイヤー2の利得 # 計算を実行する def compute(self): self.proposer_point = Constants.endowment - self.proposal #プレイヤー1の初期保有額-プレイヤー2への提案額 self.accepter_point = self.proposal #プレイヤー2への提案額 p1 = self.get_player_by_id(Constants.A_List[self.round_number - 1]) p2 = self.get_player_by_id(Constants.B_List[self.round_number - 1]) p1.payoff = self.proposer_point p2.payoff = self.accepter_point class Player(BasePlayer): def role(self): return {1: 'A', 2: 'B'}[self.id_in_group]