from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, ) from django.utils.translation import ugettext class Constants(BaseConstants): name_in_url = 'dice_roller' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): player_name = models.StringField() def live_roller(self, page_input): import random if isinstance(page_input, list) and page_input!=[] and len(page_input[0])>2: total=0 dices='' dx='' for j in range(1,len(page_input[0])): subtotal=0 n=int(page_input[0][j][1:]) m=page_input[1][j] #subdices=m*[0] subdices='(' subdx=str(m)+'xD'+str(n) for i in range(m): aux=random.randint(1, n) subtotal+=aux if i==0: subdices+=str(aux) else: subdices+=','+str(aux) subdices+=')' total+=subtotal if j==1: dx=subdx dices=subdices else: dx+='+'+subdx dices+='+'+subdices group_response = dict(plname=self.player_name, dizes=dx,rollz=dices,roll_total=total) return {0: group_response} elif len(page_input[0])==2: n=int(page_input[0][1][1:]) m=page_input[1][1] dx=str(m)+'xD'+str(n) subdices='' total=0 for i in range(m): aux=random.randint(1, n) total+=aux if i==0: subdices+=str(aux) else: subdices+=','+str(aux) return {0: dict(plname=self.player_name, dizes=dx,rollz=subdices,roll_total=total)} else: return {0: dict(plname=self.player_name, dizes='No dice',rollz='',roll_total=0)}