from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random import numpy as np class Instructions(Page): form_model = 'player' form_fields = ['ex_answer'] def vars_for_template(self): l = ['P', 'R', 'S', 'W'] c = [314,109,718,918] r = np.random.randint(len(l)) return dict(winner_payoff = Constants.winner_payoff, loser_payoff = Constants.loser_payoff, ex_letters = l, ex_codes = c, ex_word = l[r]) def before_next_page(self): # draw all 10 multipliers before part1 app self.participant.vars['multipliers'] = np.random.randint(Constants.m_lo, Constants.m_hi+1, Constants.num_part1_rounds) # save average multiplier in data self.player.avg_multiplier = np.average(self.participant.vars['multipliers']) # save coin flip result for P3 if self.player.id_in_group==3: self.player.coinflip = np.random.randint(2) #0=points, 1=lottery self.participant.vars['coinflip'] = self.player.coinflip # save lottery result for P3 (if coinflip=0, then no lottery; if coninflip=1, then lottery) self.player.lottery = self.player.coinflip * [Constants.winner_payoff,Constants.loser_payoff][np.random.randint(2)] self.participant.vars['lottery'] = self.player.lottery # save lottery result as payoff self.player.payoff = self.player.lottery page_sequence = [Instructions]