from otree.api import * class C(BaseConstants): # 基本设置 NAME_IN_URL = 'honest_game1' PLAYERS_PER_GROUP = 2 NUM_ROUNDS = 2 class Subsession(BaseSubsession): pass class Player(BasePlayer): pass class Group(BaseGroup): A_point = models.IntegerField( min=0, max=6, label="请报告当前的点数", ) B_point = models.IntegerField( min=0, max=6, label="请报告当前的点数", ) P1_payoff = models.IntegerField() P2_payoff = models.IntegerField() # FUNCTIONS def set_payoffs(group: Group): if group.A_point == group.B_point: group.P1_payoff = 4 group.P2_payoff = 12 else: group.P1_payoff = 4 group.P2_payoff = 0 class Aoption(Page): # A被试(第一个人)选择 form_model = 'group' form_fields = ['A_point'] @staticmethod def is_displayed(player: Player): return player.id_in_group == 1 class WaitA(WaitPage): # B被试等待 pass class Boption(Page): # B被试(第二个人)选择 form_model = 'group' form_fields = ['B_point'] @staticmethod def is_displayed(player: Player): return player.id_in_group == 2 class ResultsWaitPage(WaitPage): # 等待 after_all_players_arrive = set_payoffs class Results(Page): # 反馈屏 form_model = 'group' page_sequence = [ Aoption, WaitA, Boption, ResultsWaitPage, Results, ]