from otree.api import ( models, BaseConstants, BaseSubsession, BaseGroup, BasePlayer ) from django.utils.safestring import mark_safe author = 'Your name here' doc = """ Your app description """ GROUPS = { 1: 'Crusoe', 2: 'Friday' } class Constants(BaseConstants): name_in_url = 'robinsoncrusoe' players_per_group = 2 num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): hours_spent_fishing = models.IntegerField(min=0, max=12, label="Hours spent on fishing:") hours_spent_coconuts = models.IntegerField(min=0, max=12, label="Hours spent on gathering coconuts:") sent_fishes = models.IntegerField(min=0, label=mark_safe("Send x fish to get x coconuts:")) sent_coconuts = models.IntegerField(min=0, label=mark_safe("Send y coconuts to get y fish:")) def group_name(self): return GROUPS[self.id_in_group] def other_group_name(self): return GROUPS[list(GROUPS.keys())[-self.id_in_group]] def collected_fishes(self): if GROUPS[self.id_in_group] == 'Crusoe': return self.hours_spent_fishing if GROUPS[self.id_in_group] == 'Friday': return self.hours_spent_fishing * 4 def collected_coconuts(self): if GROUPS[self.id_in_group] == 'Crusoe': return self.hours_spent_coconuts * 2 if GROUPS[self.id_in_group] == 'Friday': return self.hours_spent_coconuts * 2 def sent_fishes_max(self): return self.collected_fishes() def sent_coconuts_max(self): return self.collected_coconuts()