from otree.api import * c = cu doc = '' class Constants(BaseConstants): name_in_url = 'Cost' players_per_group = None num_rounds = 1 cost1 = 2125 cost2 = 2250 cost3 = 2375 cost4 = 2500 cost5 = 2625 cost6 = 2750 cost7 = 2875 pretask1 = 175 pretask2 = 375 pretask3 = '是' instructions_template = 'Cost/instructions.html' class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): report1 = models.FloatField(label='本季度本部门的生产成本预算为(单位:实验币)', max=3000, min=2000) report2 = models.FloatField(label='本季度本部门的生产成本预算为(单位:实验币)', max=3000, min=2000) report3 = models.FloatField(label='本季度本部门的生产成本预算为(单位:实验币)', max=3000, min=2000) report4 = models.FloatField(label='本季度本部门的生产成本预算为(单位:实验币)', max=3000, min=2000) report5 = models.FloatField(label='本季度本部门的生产成本预算为(单位:实验币)', max=3000, min=2000) report6 = models.FloatField(label='本季度本部门的生产成本预算为(单位:实验币)', max=3000, min=2000) report7 = models.FloatField(label='本季度本部门的生产成本预算为(单位:实验币)', max=3000, min=2000) payoff13 = models.FloatField() payoff14 = models.FloatField() payoff15 = models.FloatField() payoff16 = models.FloatField() payoff17 = models.FloatField() payoff18 = models.FloatField() payoff19 = models.FloatField() pre_task1 = models.IntegerField(label='1.假如您对总部报告的生产成本预算为2280实验币,您本季度的收益为(单位:实验币)') pre_task2 = models.IntegerField(label='2.假如您对总部报告的生产成本预算为2480实验币,您本季度的收益为(单位:实验币)') pre_task3 = models.StringField(label='3.您的报告是否会影响公司总部的收益。(请填写“是”或“否”)') class Start(Page): form_model = 'player' class Introduction(Page): form_model = 'player' class Pre_task(Page): form_model = 'player' form_fields = ['pre_task1', 'pre_task2', 'pre_task3'] @staticmethod def error_message(player, values): if values ['pre_task1'] != Constants.pretask1: return '您未正确回答问题' if values ['pre_task2'] != Constants.pretask2: return '您未正确回答问题' if values['pre_task3'] != Constants.pretask3: return '您未正确回答问题' class Cost3(Page): form_model = 'player' form_fields = ['report3'] class Cost6(Page): form_model = 'player' form_fields = ['report6'] class Cost2(Page): form_model = 'player' form_fields = ['report2'] class Cost5(Page): form_model = 'player' form_fields = ['report5'] class Cost1(Page): form_model = 'player' form_fields = ['report1'] class Cost4(Page): form_model = 'player' form_fields = ['report4'] class Cost7(Page): form_model = 'player' form_fields = ['report7'] @staticmethod def before_next_page(player, timeout_happened): participant = player.participant player.payoff13 = 2.5+(player.report1 - Constants.cost1)/50 player.payoff14 = 2.5+(player.report2 - Constants.cost2)/50 player.payoff15 = 2.5+(player.report3 - Constants.cost3)/50 player.payoff16 = 2.5+(player.report4 - Constants.cost4)/50 player.payoff17 = 2.5+(player.report5 - Constants.cost5)/50 player.payoff18 = 2.5+(player.report6 - Constants.cost6)/50 player.payoff19 = 2.5+(player.report7 - Constants.cost7)/50 participant.vars['payoff13'] = player.payoff13 participant.vars['payoff14'] = player.payoff14 participant.vars['payoff15'] = player.payoff15 participant.vars['payoff16'] = player.payoff16 participant.vars['payoff17'] = player.payoff17 participant.vars['payoff18'] = player.payoff18 participant.vars['payoff19'] = player.payoff19 page_sequence = [Start, Introduction, Pre_task, Cost3, Cost6, Cost2, Cost5, Cost1, Cost4, Cost7]