from otree.api import *
import random
cu = cu
doc = ''
class C(BaseConstants):
NAME_IN_URL = 'survey_control'
PLAYERS_PER_GROUP = None
NUM_ROUNDS = 1
class Subsession(BaseSubsession):
pass
class Group(BaseGroup):
pass
class Player(BasePlayer):
your_given_more = models.IntegerField(min=0)
other_given_more = models.IntegerField(min=0)
your_given_0 = models.IntegerField(min=0)
your_given_1 = models.IntegerField(min=0)
your_given_2 = models.IntegerField(min=0)
your_given_3 = models.IntegerField(min=0)
your_given_4 = models.IntegerField(min=0)
your_given_5 = models.IntegerField(min=0)
your_given_6 = models.IntegerField(min=0)
your_given_7 = models.IntegerField(min=0)
your_given_8 = models.IntegerField(min=0)
your_given_9 = models.IntegerField(min=0)
your_given_10 = models.IntegerField(min=0)
your_given_11 = models.IntegerField(min=0)
your_given_12 = models.IntegerField(min=0)
your_given_13 = models.IntegerField(min=0)
your_given_14 = models.IntegerField(min=0)
your_given_15 = models.IntegerField(min=0)
your_given_16 = models.IntegerField(min=0)
your_given_17 = models.IntegerField(min=0)
your_given_18 = models.IntegerField(min=0)
your_given_19 = models.IntegerField(min=0)
your_given_20 = models.IntegerField(min=0)
your_given_21 = models.IntegerField(min=0)
your_given_22 = models.IntegerField(min=0)
your_given_23 = models.IntegerField(min=0)
your_given_24 = models.IntegerField(min=0)
# FUNCTIONS
def your_given_more_max(player: Player):
return player.session.config["init_more"]
def other_given_more_max(player: Player):
return player.session.config["init_more"]
def your_given_0_max(player: Player):
return player.session.config["init_more"]
def your_given_1_max(player: Player):
return player.session.config["init_more"]
def your_given_2_max(player: Player):
return player.session.config["init_more"]
def your_given_3_max(player: Player):
return player.session.config["init_more"]
def your_given_4_max(player: Player):
return player.session.config["init_more"]
def your_given_5_max(player: Player):
return player.session.config["init_more"]
def your_given_6_max(player: Player):
return player.session.config["init_more"]
def your_given_7_max(player: Player):
return player.session.config["init_more"]
def your_given_8_max(player: Player):
return player.session.config["init_more"]
def your_given_9_max(player: Player):
return player.session.config["init_more"]
def your_given_10_max(player: Player):
return player.session.config["init_more"]
def your_given_11_max(player: Player):
return player.session.config["init_more"]
def your_given_12_max(player: Player):
return player.session.config["init_more"]
def your_given_13_max(player: Player):
return player.session.config["init_more"]
def your_given_14_max(player: Player):
return player.session.config["init_more"]
def your_given_15_max(player: Player):
return player.session.config["init_more"]
def your_given_16_max(player: Player):
return player.session.config["init_more"]
def your_given_17_max(player: Player):
return player.session.config["init_more"]
def your_given_18_max(player: Player):
return player.session.config["init_more"]
def your_given_19_max(player: Player):
return player.session.config["init_more"]
def your_given_20_max(player: Player):
return player.session.config["init_more"]
def your_given_21_max(player: Player):
return player.session.config["init_more"]
def your_given_22_max(player: Player):
return player.session.config["init_more"]
def your_given_23_max(player: Player):
return player.session.config["init_more"]
def your_given_24_max(player: Player):
return player.session.config["init_more"]
def end_points(player: Player):
participant = player.participant
k = participant.survey_option1 # when the coplayer contributes k
survey_contribution = eval('player.your_given_{}'.format(k))
survey_points = player.session.config["init_more"] - survey_contribution + (k * player.session.config["unit_less"] + survey_contribution * player.session.config["unit_more"])/2
survey_points = format(survey_points, '.2f')
number_points1 = participant.sum_points1
number_points2 = participant.sum_points2
total_points = participant.sum_points1 + participant.sum_points2 + survey_points
result = "Your final cumulative point in Game 1 is {},
your final cumulative point in Game 2 is {}, and
you obtain {} in the survey.
Final point is {} + {} + {} = {}.
Your total income is 20 + 0.03 * {} = {}.".format(
participant.sum_points1,
participant.sum_points2,
survey_points,
number_points1,
number_points2,
survey_points,
total_points,
total_points,
20+0.03*total_points,
)
return result
# PAGES
class Survey(Page):
form_model = 'player'
form_fields = ['your_given_more', 'other_given_more','your_given_0','your_given_1','your_given_2','your_given_3','your_given_4',
'your_given_5','your_given_6','your_given_7','your_given_8','your_given_9','your_given_10',
'your_given_11','your_given_12','your_given_13','your_given_14','your_given_15','your_given_16',
'your_given_17','your_given_18','your_given_19','your_given_20','your_given_21','your_given_22',
'your_given_23','your_given_24']
@staticmethod
def vars_for_template(player: Player):
player.participant.survey_option1 = random.choice(range(0,24+1))
return dict(
your_given_more="Your contribution (An integer between 0-{})".format(player.session.config["init_more"]),
other_given_more="Coplayer's contribution (An integer between 0-{})".format(player.session.config["init_less"])
)
class End(Page):
form_model = 'player'
@staticmethod
def vars_for_template(player: Player):
return dict(
end_points = end_points(player)
)
page_sequence = [Survey, End]