from otree.api import * class C(BaseConstants): NAME_IN_URL = 'zemi_a' PLAYERS_PER_GROUP = 2 NUM_ROUNDS = 7 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): keisiki = models.StringField( choices=[['レンタル', 'レンタル'], ['販売', '販売']], label='どちらの方法を採用しますか?', widget=widgets.RadioSelect, ) first_a = models.FloatField( choices=[['2', '2'], ['3', '3'],['4', '4'],['5', '5']], label='1期目の生産量はどうしますか?', widget=widgets.RadioSelect, ) first_b = models.FloatField( choices=[['1', '1'], ['2', '2'],['3', '3'],['4', '4']], label='1期目の生産量はどうしますか?', widget=widgets.RadioSelect, ) second_a = models.FloatField( choices=[['2', '2'], ['3', '3'],['4', '4'],['5', '5']], label='2期目の生産量はどうしますか?', widget=widgets.RadioSelect, ) second_b = models.FloatField( choices=[['0.5', '0.5'], ['1.5', '1.5'],['2.5', '2.5'],['3.5', '3.5']], label='2期目の生産量はどうしますか?', widget=widgets.RadioSelect, ) # FUNCTIONS # PAGES class Ways(Page): timeout_seconds = 30 form_model = 'player' form_fields = ['keisiki'] class Output1_a(Page): timeout_seconds = 30 def is_displayed(self): return self.keisiki == 'レンタル' form_model = 'player' form_fields = ['first_a'] class Output1_b(Page): timeout_seconds = 30 def is_displayed(self): return self.keisiki == '販売' form_model = 'player' form_fields = ['first_b'] class Output2_a(Page): timeout_seconds = 30 def is_displayed(self): return self.keisiki == 'レンタル' form_model = 'player' form_fields = ['second_a'] class Output2_b(Page): timeout_seconds = 30 def is_displayed(self): return self.keisiki == '販売' form_model = 'player' form_fields = ['second_b'] class ResultsWaitPage(WaitPage): after_players_arrive = Output2_a or Output2_b class Results(Page): after_all_players_arrive = ResultsWaitPage page_sequence = [Ways, Output1_a, Output1_b, Output2_a, Output2_b, ResultsWaitPage, Results]