from otree.api import * doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'quiz_c' players_per_group = None # num_group = 2 # num_participants=num_group*players_per_group # players_per_group_but_yourself=players_per_group-1 # num_game_cell=16 # num_game_cell_per_row=int(num_game_cell** 0.5) # timeout_seconds_remember=6 # timeout_seconds_write=30 # exchange_rate=5 # num_vote_round=1 # num_game_round=3 # num_cycle=3 # num_subsession=1 # num_vote_round_per_subsession=num_vote_round*num_cycle # num_game_round_per_subsession=num_game_round*num_cycle num_rounds = 1 form_template = __name__ + '/form.html' instructions_template = 'quiz_control/instructions.html' class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): Q1 = models.IntegerField( label= "1. 在選擇回合 ( A ) ,若有 2 人選擇 X 方案, 1 人選擇 Y 方案,最終會以哪個方案執行?", choices=[ [0, '甲. X 方案'],[1, '乙. Y 方案'],[2, '丙. 電腦隨機選擇一個方案'],], widget=widgets.RadioSelect,) Q2 = models.IntegerField( label= "2. 假設目前剩下 6 名玩家,上階段的選擇方案為 X 方案,這一階段選擇回合( A )如果有 3 人選擇 X 方案, 3 人選擇 Y 方案,則這次的選擇方案會是?", choices=[ [0, '甲. X 方案'],[1, '乙. Y 方案'],[2, '丙. 電腦隨機選擇一個方案'],], widget=widgets.RadioSelect,) Q3 = models.IntegerField(label="請問在這次遊戲回合( B )中,你的目前大組累積報酬和目前個人累積報酬分別可增加多少法幣(選項中前者是目前大組累積報酬,後者是目前個人累積報酬可增加的法幣數量)?", choices=[ [0, '甲. 2 法幣,1 法幣'],[1, '乙. 2 法幣,2 法幣'],[2, '丙. 3 法幣,1 法幣'],[3, '丁. 3 法幣,2 法幣'],], widget=widgets.RadioSelect,) Q4 = models.IntegerField( label= "4. 假設在某一輪的第一階段的選擇回合( A )後,你的大組 ( 共 3 人 ) 目前選擇了 X 方案,且你被選中了,以下哪種敘述正確?", choices=[ [0, '甲. 剩下所有同組組員都會被選中'],[1, '乙. 剩下所有同組組員都不會被選中'],[2, '丙. 剩下每位同組組員有獨立的機率被選中 '],[3, '丁. 剩下每位同組組員有機率被選中但不獨立'],], widget=widgets.RadioSelect,) Q5 = models.IntegerField( label= "5. 假設在某一輪的第一階段的選擇回合( A )後,你的大組 ( 共 3 人 ) 目前選擇了 Y 方案,且你被選中了,以下哪種敘述正確?", choices=[ [0, '甲. 剩下所有同組組員都會被選中'],[1, '乙. 剩下所有同組組員都不會被選中'],[2, '丙. 剩下每位同組組員有獨立的機率被選中'],[3, '丁. 剩下每位同組組員有機率被選中但不獨立'],], widget=widgets.RadioSelect,) Q6 = models.IntegerField( label= "6. 假設在某一輪第 3 階段的第3 個遊戲回合( B )結束後你被選中了,目前整個大組累積報酬為 18 法幣,目前個人累積報酬為 4 法幣,那麼在這一輪你可以拿到多少大組累積報酬+個人累積報酬? ", choices=[ [0, '甲. 11 法幣'],[1, '乙. 13 法幣'],[2, '丙. 20 法幣'],[3, '丁. 22 法幣'],], widget=widgets.RadioSelect,) Q7 = models.IntegerField( label= "7. 假如你在某一輪被選中了,那在同一輪接下來的遊戲回合( B )中,請問下列哪個選項的敘述正確?",) # choices=[ # [0, '甲. 這些遊戲回合你的作答依然會貢獻大組累積報酬,也會影響你的個人累積報酬。'], # [1, '乙. 這些遊戲回合你的作答依然會貢獻大組累積報酬,但不會影響你的個人累積報酬。'], # [2, '丙. 這些遊戲回合你的作答都不會貢獻大組累積報酬,但會影響你的個人累積報酬。'], # [3, '丁. 這些遊戲回合你的作答都不會貢獻大組累積報酬,也不會影響你的個人累積報酬。'], # ], # widget=widgets.RadioSelect,) # PAGES class Introduction(Page): pass class Page1(Page): form_model = 'player' form_fields = ['Q1'] class Page2(Page): form_model = 'player' form_fields = ['Q2'] class Page3(Page): form_model = 'player' form_fields = ['Q3'] class Page4(Page): form_model = 'player' form_fields = ['Q4'] class Page5(Page): form_model = 'player' form_fields = ['Q5'] class Page6(Page): form_model = 'player' form_fields = ['Q6'] class Page7(Page): form_model = 'player' form_fields = ['Q7'] class Result1(Page): form_model = 'player' form_fields = ['Q1'] @staticmethod def vars_for_template(player: Player): if player.Q1 == 0: is_Q1_correct= True else: is_Q1_correct= False return dict(is_Q1_correct=is_Q1_correct) class Result2(Page): form_model = 'player' form_fields = ['Q2'] @staticmethod def vars_for_template(player: Player): if player.Q2 == 0: is_Q2_correct= True else: is_Q2_correct= False return dict(is_Q2_correct=is_Q2_correct) class Result3(Page): form_model = 'player' form_fields = ['Q3'] @staticmethod def vars_for_template(player: Player): if player.Q3 == 1: is_Q3_correct= True else: is_Q3_correct= False return dict(is_Q3_correct=is_Q3_correct) class Result4(Page): form_model = 'player' form_fields = ['Q4'] @staticmethod def vars_for_template(player: Player): if player.Q4 == 2: is_Q4_correct= True else: is_Q4_correct= False return dict(is_Q4_correct=is_Q4_correct) class Result5(Page): form_model = 'player' form_fields = ['Q5'] @staticmethod def vars_for_template(player: Player): if player.Q5 == 0: is_Q5_correct= True else: is_Q5_correct= False return dict(is_Q5_correct=is_Q5_correct) class Result6(Page): form_model = 'player' form_fields = ['Q6'] @staticmethod def vars_for_template(player: Player): if player.Q6 == 1: is_Q6_correct= True else: is_Q6_correct= False return dict(is_Q6_correct=is_Q6_correct) class Result7(Page): form_model = 'player' form_fields = ['Q7'] @staticmethod def vars_for_template(player: Player): if player.Q7 == 2: is_Q7_correct= True else: is_Q7_correct= False return dict(is_Q7_correct=is_Q7_correct) class bye(Page): pass page_sequence = [Introduction, Page1,Page2,Page3,Page4,Page5,Page6,Page7, bye]