from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) from random import randint author = 'jNM²' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'BenchmarkGame' players_per_group = 2 num_rounds = 7 Cfix = 75 class Subsession(BaseSubsession): pass class Group(BaseGroup): newPrice = models.CurrencyField() sent_amount = models.IntegerField( min=0, max=9999999, doc="""Demand forecast sent by seller""" ) sent_back_amount = models.IntegerField( min=0, max=9999999, doc="""Amount will be produced""" ) rdmCurve_Sales = models.IntegerField() rdmCurve_Operation = models.IntegerField() rdmRound = models.IntegerField() #self.player. def random(self): self.rdmRound = randint(1, Constants.num_rounds) players = self.get_players() for p in players: if p.role() == "Sales": randChoice1 = randint(0, 2) if self.session.config['certainty'] == False: if randChoice1 == 1: self.rdmCurve_Sales = 1 if randChoice1 == 2: self.rdmCurve_Sales = 0 else: self.rdmCurve_Sales = -1 else: self.rdmCurve_Sales = 0 else: randChoice2 = randint(0, 2) if self.session.config['certainty'] == False: if randChoice2 == 1: self.rdmCurve_Operation = 1 if randChoice2 == 2: self.rdmCurve_Operation = 0 else: self.rdmCurve_Operation = -1 else: self.rdmCurve_Operation = 0 # ============================================================================= # self.randChoice = randint(0, 2) # # if self.session.config['certainty'] == False: # if self.randChoice == 1: # self.rdmCurve = 1 # if self.randChoice == 2: # self.rdmCurve = 0 # else: # self.rdmCurve = -1 # else: # self.rdmCurve = 0 # ============================================================================= # save random choice in data 0 in certainty case, 1 in +1 shift, -1 for -1 shift class Player(BasePlayer): def role(self): return {1: 'Sales', 2: 'Operation'}[self.id_in_group]