from otree.api import * c = cu doc = '' class C(BaseConstants): NAME_IN_URL = 'task2_Carbon_emission' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 TASK2_TOTAL = 100 TASK2_Q1 = 100 TASK2_Q2 = 20 LOSE_MONEY = 0 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): task2_question1 = models.IntegerField(label='(您可以填写任意0到100之间的整数,包括0和100)。', max=100, min=0) task2_question2 = models.IntegerField(label='(您可以填写任意0到100之间的整数,包括0和100)。', max=100, min=0) task2_question1_price = models.IntegerField(initial=0) task2_question2_price = models.IntegerField(initial=0) task2_question1_win = models.IntegerField(initial=0) task2_question2_win = models.IntegerField(initial=0) task2_question1_buy = models.IntegerField(initial=0) task2_question1_dividend = models.IntegerField(initial=0) task2_question1_carbon_reduction = models.IntegerField(initial=0) task2_question2_buy = models.IntegerField(initial=0) task2_question2_dividend = models.IntegerField(initial=0) task2_question2_carbon_reduction = models.IntegerField(initial=0) class Introduction(Page): form_model = 'player' class Question1(Page): form_model = 'player' form_fields = ['task2_question1'] class Question2(Page): form_model = 'player' form_fields = ['task2_question2'] @staticmethod def before_next_page(player: Player, timeout_happened): participant = player.participant import random player.task2_question1_price=random.randint(0,C.TASK2_TOTAL) player.task2_question2_price=random.randint(0,C.TASK2_TOTAL) player.task2_question1_win=random.randint(0,1) player.task2_question2_win=random.randint(0,1) if player.task2_question1_price>=player.task2_question1: player.task2_question1_buy=1 player.task2_question1_dividend=player.task2_question1_win*player.task2_question1_price+(1-player.task2_question1_win)*C.LOSE_MONEY player.task2_question1_carbon_reduction=0 else: player.task2_question1_buy=0 player.task2_question1_dividend=0 player.task2_question1_carbon_reduction=100 if player.task2_question2_price>=player.task2_question2: player.task2_question2_buy=1 player.task2_question2_dividend=player.task2_question2_win*player.task2_question2_price+(1-player.task2_question2_win)*C.LOSE_MONEY player.task2_question2_carbon_reduction=80 else: player.task2_question2_buy=0 player.task2_question2_dividend=0 player.task2_question2_carbon_reduction=100 participant.vars['task2_question1'] = player.task2_question1 participant.vars['task2_question2'] = player.task2_question2 participant.vars['task2_question1_price']=player.task2_question1_price participant.vars['task2_question2_price']=player.task2_question2_price participant.vars['task2_question1_win']=player.task2_question1_win participant.vars['task2_question2_win']=player.task2_question2_win participant.vars['task2_question1_buy']=player.task2_question1_buy participant.vars['task2_question2_buy']=player.task2_question2_buy participant.vars['task2_question1_dividend']=player.task2_question1_dividend participant.vars['task2_question2_dividend']=player.task2_question2_dividend participant.vars['task2_question1_carbon_reduction']=player.task2_question1_carbon_reduction participant.vars['task2_question2_carbon_reduction']=player.task2_question2_carbon_reduction page_sequence = [Introduction, Question1, Question2]