from otree.api import * import random c = Currency class Constants(BaseConstants): name_in_url = 'Instruction2' players_per_group = None num_rounds = 1 ######################################################## instructions_template = 'Instruction2/instructions.html' list_quiz = [1,2,3,4] class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): exp_number = models.IntegerField() ###################Quiz################### quiz_number = models.IntegerField() Q1 = models.StringField(initial=None, choices=[['A','A'], ['B','B']] ) Q2 = models.StringField(initial=None, choices=['10秒', '13秒','15秒', '20秒'], label="制限時間で正しいのは、", widget=widgets.RadioSelect) Q3 = models.StringField(initial=None, choices=['0ポイント','5ポイント','10ポイント'], label="制限時間の10秒が過ぎた時点で店の選択ができなかった場合、あなたが獲得するポイントは、", widget=widgets.RadioSelect) # PAGES class Introduction_0(Page): @staticmethod def before_next_page(player: Player, timeout_happened): player.quiz_number = Constants.list_quiz.copy()[0] player.participant.vars["quiz_number"] = player.quiz_number class Introduction(Page): @staticmethod def before_next_page(player: Player,timeout_happened): player.quiz_number = Constants.list_quiz.copy()[1] player.participant.vars["quiz_number"] = player.quiz_number class Quiz1_1(Page): form_model="player" form_fields=["Q1"] @staticmethod def vars_for_tempalte(player:Player): return dict( x = player.participant.vars["quiz_number"] ) @staticmethod def error_message(player:Player, values): if values["Q1"] == 'A': return '回答が違います。もう一度回答してください。' else: pass @staticmethod def before_next_page(player: Player, timeout_happened): player.quiz_number = Constants.list_quiz.copy()[2] player.participant.vars["quiz_number"] = player.quiz_number class Quiz_time(Page): form_model="player" form_fields=["Q2","Q3"] def vars_for_tempalte(player:Player): return dict( x = player.participant.vars["quiz_number"] ) @staticmethod def error_message(player:Player, values): if values["Q2"] != '15秒': return '回答が違います。もう一度回答してください。' else: pass if values["Q3"] != '0ポイント': return '回答が違います。もう一度回答してください。' else: pass @staticmethod def before_next_page(player: Player, timeout_happened): player.quiz_number = Constants.list_quiz.copy()[2] player.participant.vars["quiz_number"] = player.quiz_number class start(Page): def vars_for_tempalte(player:Player): return dict( x = player.participant.vars["quiz_number"] ) page_sequence = [Introduction_0,Introduction,Quiz1_1,Quiz_time,start,]