from otree.api import * doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'finalresult' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): reward = models.IntegerField() # 報酬 faculty_name = models.IntegerField( label="所属学部、研究科", choices=[ [1, '文学部'], [2, '人間科学部'], [3, '法学部'], [4, '経済学部'], [5, '理学部'], [6, '医学部'], [7, '歯学部'], [8, '薬学部'], [9, '工学部'], [10, '基礎工学部'], [11, '外国語学部'], [12, '文学研究科'], [13, '人間科学研究科'], [14, '法学研究科'], [15, '経済学研究科'], [16, '理学研究科'], [17, '医学系研究科'], [18, '歯学研究科'], [19, '薬学研究科'], [20, '工学研究科'], [21, '基礎工学研究科'], [22, '言語文化研究科'], [23, '国際公共政策研究科'], [24, '生命機能研究科'], [25, '情報科学研究科'], [26, '高等司法研究科'], [27, '人文学研究科'], [28, '言語社会研究科'], [29, '連合小児発達学研究科'], [0, 'その他'], ], widget=widgets.RadioSelect, blank=True ) age = models.IntegerField(label="年齢", blank=True) gender = models.IntegerField( label="性別", choices=[ [1, '男性'], [2, '女性'], [3, 'その他'], [4, '未回答'], ], widget=widgets.RadioSelect, blank=True ) is_experimented = models.BooleanField( label="過去に同様の実験に参加したことがあるか否か", choices=[ [True, 'ある'], [False, 'ない'], ], widget=widgets.RadioSelect, blank=True ) higher_count = models.IntegerField( label="この実験に参加したあなた以外の人々から、無作為に100人を選びます。選ばれた100人のうち、本番ラウンドでの平均獲得ポイントがあなたより高かった人は何人だと思いますか?(なお、あなたと同点の人は数に含めないでください)", blank=True ) pass # PAGES class ResultsWaitPage(WaitPage): pass class Results(Page): @staticmethod def vars_for_template(player: Player): import random selected_round = random.randint(1, len(player.participant.vars['point_list']))#(1, 12) point = player.participant.vars['point_list'][selected_round] player.reward = int(point)+500 return dict(round_number=selected_round, point=point, reward=player.reward) @staticmethod def js_vars(player: Player): return dict(point_list=player.participant.vars['point_list']) pass class QuestionnaireOffer(Page): pass class Questionnaire(Page): form_model = 'player' form_fields = ['faculty_name', 'age', 'gender', 'is_experimented', 'higher_count'] # this means player.~~ pass page_sequence = [Results, QuestionnaireOffer, Questionnaire]