from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random class Start_Test(Page): #This is introduction of the understanding test. def vars_for_template(self): self.subsession.get_game() class Q1(Page): #The questions on this page are all about matching protocol and number of repetitions form_model = 'player' form_fields = ['Problem_Q1A','Problem_Q1B','Problem_Q1C'] def error_message(self, values): if values['Problem_Q1A'] != 1 or values['Problem_Q1B'] != 1 or values['Problem_Q1C'] != 0: return '回答に少なくとも1つ誤りがあります。ヒント:【ルール説明を再表示する/しない】を押して、「あなたの相手と意思決定回数」の内容を確認してください。' class Q2(Page): #The questions on this page are all about decision making task in each round form_model = 'player' form_fields = ['Problem_Q2A', 'Problem_Q2B', 'Problem_Q2C'] def error_message(self, values): if values['Problem_Q2A'] != 1 or values['Problem_Q2B'] != 1 or values['Problem_Q2C'] != 1: return '回答に少なくとも1つ誤りがあります。ヒント:【ルール説明を再表示する/しない】を押して、「各回で行う意思決定」の内容を確認してください。' class Q3(Page): #The questions on this page are all about disaster probabilities form_model = 'player' form_fields = ['Problem_Q3A', 'Problem_Q3B', 'Problem_Q3C'] def error_message(self, values): if values['Problem_Q3A'] != 0 or values['Problem_Q3B'] != 1 or values['Problem_Q3C'] != 0: return '回答に少なくとも1つ誤りがあります。ヒント:【ルール説明を再表示する/しない】を押して、「災害について」の内容を確認してください。' class Q4(Page): #The questions on this page are all about payoff calculation form_model = 'player' form_fields = ['Problem_Q4A', 'Problem_Q4B', 'Problem_Q4C'] def error_message(self, values): if values['Problem_Q4A'] != 20 and values['Problem_Q4B'] != 90 and values['Problem_Q4C'] != 20: return '全問間違っています。' \ '問題1のヒント:「各回で行う意思決定」内のA処理とB処理に掛かる費用に関する項目を確認してください。'\ '問題2と3ヒント:「各回での獲得ポイント」の項目と「各回で行う意思決定」内のA処理に掛かる費用を確認してください。'\ '確認したい点があれば、実験者にプライベートチャットでお気軽にご連絡ください' elif values['Problem_Q4A'] != 20 and values['Problem_Q4B'] != 90: return '問題1と2が間違っています。' \ '問題1のヒント:「各回で行う意思決定」内のA処理とB処理に掛かる費用に関する項目を確認してください。'\ '問題2のヒント:「各回での獲得ポイント」の項目と「各回で行う意思決定」内のA処理に掛かる費用を確認してください。' \ '確認したい点があれば、実験者にプライベートチャットでお気軽にご連絡ください' elif values['Problem_Q4A'] != 20 and values['Problem_Q4C'] != 20: return '問題1と3が間違っています。' \ '問題1のヒント:「各回で行う意思決定」内のA処理とB処理に掛かる費用に関する項目を確認してください。'\ '問題3のヒント:「各回での獲得ポイント」の項目と「各回で行う意思決定」内のA処理に掛かる費用を確認してください。' \ '確認したい点があれば、実験者にプライベートチャットでお気軽にご連絡ください' elif values['Problem_Q4B'] != 90 and values['Problem_Q4C'] != 20: return '問題2と3が間違っています。' \ '問題2と3のヒント:「各回での獲得ポイント」の項目と「各回で行う意思決定」内のA処理に掛かる費用を確認してください。' \ '確認したい点があれば、実験者にプライベートチャットでお気軽にご連絡ください' elif values['Problem_Q4A'] != 20: return '問題1が間違っています。' \ '問題1のヒント:「各回で行う意思決定」内のA処理とB処理に掛かる費用に関する項目を確認してください。'\ '確認したい点があれば、実験者にプライベートチャットでお気軽にご連絡ください' elif values['Problem_Q4B'] != 90: return '問題2が間違っています。' \ '問題2のヒント:「各回での獲得ポイント」の項目と「各回で行う意思決定」内のA処理に掛かる費用を確認してください。' \ '確認したい点があれば、実験者にプライベートチャットでお気軽にご連絡ください' elif values['Problem_Q4C'] != 20: return '問題3が間違っています。' \ '問題3のヒント:「各回での獲得ポイント」の項目と「各回で行う意思決定」内のA処理に掛かる費用を確認してください。' \ '確認したい点があれば、実験者にプライベートチャットでお気軽にご連絡ください' class Final_Test(Page): #This page announces the end of the understanding test & connects to the next decision making task pass page_sequence = [Start_Test,Q1,Q2,Q3,Q4,Final_Test ]