from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) class Constants(BaseConstants): name_in_url = 'BART_myexemple' players_per_group = None num_rounds = 1 balloons_per_round = 30 explosion_point = 25 payout_if_explode = c(0.10) bonus = c(1.00) class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): pump_number = models.PositiveIntegerField( min=0, max=Constants.explosion_point, widget=widgets.SliderInput(), ) exploded = models.BooleanField( initial=False, ) def explode(self): if self.pump_number >= Constants.explosion_point: self.exploded = True else: self.exploded = False def payoffs(self): if self.exploded: self.payoff = Constants.payout_if_explode else: self.payoff = Constants.bonus - (self.pump_number * Constants.payout_if_explode / Constants.explosion_point) class MyPage(Page): pass class Results(Page): pass page_sequence = [MyPage, Results]