from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random author = 'Vincent Lenglin' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'EXLEY_CONSIGNE' players_per_group = None num_rounds = 1 ENDOWMENT = 5 y_me = 30 x_me = 10 nb_proba = 5 nb_ligne = 21 nb_traitement = 4 nb_tableau = nb_traitement*nb_proba nb_choice_total = nb_proba * nb_ligne * nb_traitement num_choices = nb_ligne class Subsession(BaseSubsession): def creating_session(self): for p in self.get_players(): p.ENDOWMENT = Constants.ENDOWMENT p.participant.vars['ENDOWMENT'] = Constants.ENDOWMENT p.participant.vars['y_me'] = Constants.y_me p.participant.vars['x_me'] = Constants.x_me p.y_me = p.participant.vars['y_me'] p.x_me = p.participant.vars['x_me'] p.participant.vars['nb_proba'] = Constants.nb_proba p.participant.vars['nb_ligne'] = Constants.nb_ligne p.participant.vars['nb_choice_total'] = Constants.nb_choice_total p.participant.vars['nb_traitement'] = Constants.nb_traitement p.participant.vars['nb_tableau'] = Constants.nb_tableau p.nb_proba = str(p.participant.vars['nb_proba']) p.nb_ligne = p.participant.vars['nb_ligne'] p.nb_choice_total = p.participant.vars['nb_choice_total'] p.nb_traitement = p.participant.vars['nb_traitement'] p.nb_tableau = p.participant.vars['nb_tableau'] list_appli = ['ASPS', 'ASPC', 'ACPS', 'ACPC'] p.select_part_draw1 = random.choices(['part3', 'part2', 'part4'], [ 588 / 630, 42 / 630, 0])[0] p.participant.vars['select_part_draw1'] = p.select_part_draw1 p.paiement_treatment = random.choice(list_appli) p.participant.vars['paiement_treatment'] = p.paiement_treatment p.paiement_treatment_2 = random.choice(list_appli) p.participant.vars['paiement_treatment_2'] = p.paiement_treatment_2 p.random_round = random.randint(1, Constants.num_rounds) p.random_row = random.randint(1, Constants.num_choices) p.random_round_2 = random.randint(1, Constants.num_rounds) p.random_row_2 = random.randint(1, Constants.num_choices) if p.participant.vars['paiement_treatment'] == p.participant.vars['paiement_treatment_2'] and p.random_round == p.random_round_2: p.random_round_2 = random.randint(1, Constants.num_rounds) p.participant.vars['random_round'] = p.random_round p.participant.vars['random_row'] = p.random_row p.participant.vars['random_round_2'] = p.random_round_2 p.participant.vars['random_row_2'] = p.random_row_2 p.participant.vars['n'] = 5 p.participant.vars['P1'] = [50*p.participant.vars['n']] #[5 * p.participant.vars['n']] #[5 * p.participant.vars['n'], 10 * p.participant.vars['n'], 25 * p.participant.vars['n'], #50*p.participant.vars['n'], 75*p.participant.vars['n'], 90*p.participant.vars['n'], 95*p.participant.vars['n']] p.participant.vars['P2'] = [(100 * p.participant.vars['n']) - i for i in p.participant.vars['P1']] p.participant.vars['P1_TRAINING'] = [ 50*p.participant.vars['n'] ] p.participant.vars['P2_TRAINING'] = [ 50*p.participant.vars['n'] ] p.participant.vars['is_ascending'] = 'ascending' #random.choice(['ascending','descending']) # VARIABLE A CHANGER EN FONCTION DE CE QU'ON DECIDERA A CE SUJET for s in range(1, Constants.num_rounds + 1): p.in_round(s).y_me = p.participant.vars['y_me'] p.in_round(s).x_me = p.participant.vars['x_me'] class Group(BaseGroup): pass class Player(BasePlayer): ENDOWMENT = models.IntegerField() y_me = models.IntegerField() x_me = models.IntegerField() select_part_draw1 = models.StringField() select_part_draw2 = models.StringField() random_round = models.IntegerField() random_row = models.IntegerField() random_round_2 = models.IntegerField() random_row_2 = models.IntegerField() nb_proba = models.StringField() nb_ligne = models.IntegerField() nb_choice_total = models.IntegerField() nb_traitement = models.IntegerField() nb_tableau = models.IntegerField() paiement_treatment = models.StringField() paiement_treatment_2 = models.StringField() CONSENTEMENT = models.IntegerField(blank = False, initial=0) PROLIFIC_ID = models.StringField(blank=False)