from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) author = 'Your name here' doc = """ Your app description """ import random class Constants(BaseConstants): name_in_url = 'EXLEY_DANA' players_per_group = None num_rounds = 3 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): state = models.StringField() reveal_state = models.StringField (label="", choices=['YES', 'NO'], widget=widgets.RadioSelect, blank=False ) choice = models.StringField( label="", choices=['A', 'B'], widget=widgets.RadioSelect, blank=False ) random_round_dana = models.IntegerField() choice_dana_selected = models.StringField() state_dana_selected = models.StringField() paiement_dana_self = models.IntegerField() paiement_dana_charity = models.IntegerField() def paiement_dana(self): payoff_matrix_self = { 'aligned': {'A': 6, 'B': 5}, 'unaligned': {'A': 6, 'B': 5} } payoff_matrix_charity = { 'aligned': {'A': 5, 'B': 1}, 'unaligned': {'A': 1, 'B': 5} } self.participant.vars['random_round_dana'] = random.choice([1, 2, 3]) self.random_round_dana = self.participant.vars['random_round_dana'] self.reveal_state = self.participant.vars['reveal_state'] self.choice_dana_selected = self.in_round(self.participant.vars['random_round_dana']).choice self.state_dana_selected = self.in_round(self.participant.vars['random_round_dana']).state self.paiement_dana_self = payoff_matrix_self[self.in_round(self.participant.vars['random_round_dana']).state][self.in_round(self.participant.vars['random_round_dana']).choice] self.paiement_dana_charity = payoff_matrix_charity[self.in_round(self.participant.vars['random_round_dana']).state][self.in_round(self.participant.vars['random_round_dana']).choice] self.participant.vars['paiement_dana_self'] = self.paiement_dana_self self.participant.vars['paiement_dana_charity'] = self.paiement_dana_charity self.participant.vars['choice_dana_selected'] = self.choice_dana_selected self.participant.vars['state_dana_selected'] = self.state_dana_selected