from otree.api import * c = cu doc = """ Your app description """ # code Teilweise von https://www.otreehub.com/projects/ultimatum-game/ übernommen, bzw als Vorlage genutzt class C(BaseConstants): NAME_IN_URL = 'ultimatum_spiel' PLAYERS_PER_GROUP = 2 NUM_ROUNDS = 1 ENDOWMENT = cu(100) class Subsession(BaseSubsession): pass class Group(BaseGroup): Proposer = models.IntegerField(label='Wie hoch ist ihr Angebot an den Entscheidungsträger?', max=10, min=0) Responder = models.IntegerField(label='Wie hoch muss das Mindestgebot des Anbieters sein, sodass Sie es Annehmen würden?', max=10, min=0) UG_Result = models.StringField() UGProposer_Payment = models.IntegerField() UGResponder_Payment = models.IntegerField() def warten(group: Group): print("Warten") class Player(BasePlayer): pass # PAGES class Intro(Page): #Intro wird bei Chat_App schon angezeigt, deswegen hier nicht mehr form_model = 'player' class Verteiler_Angebot(Page): form_model = 'group' form_fields = ['Proposer'] @staticmethod def is_displayed(player): return player.id_in_group == 1 class Empfaenger_Mindestgebot(Page): form_model = 'group' form_fields = ['Responder'] @staticmethod def is_displayed(player): return player.id_in_group == 2 class ResultsWaitPage(WaitPage): after_all_players_arrive = 'warten' class Results(Page): def vars_for_template(player): group = player.group if group.Responder <= group.Proposer: group.UGProposer_Payment = 10 - group.Proposer group.UGResponder_Payment = group.Proposer group.UG_Result = "einer Annahme" else: group.UGProposer_Payment = 0 group.UGResponder_Payment = 0 group.UG_Result = "keiner Annahme" return dict( UG_Result=group.UG_Result, UGProposer_Payment=group.UGProposer_Payment, UGResponder_Payment=group.UGResponder_Payment, Responder=group.Responder, Proposer=group.Proposer ) page_sequence = [Empfaenger_Mindestgebot, Verteiler_Angebot, ResultsWaitPage, Results] #Intro wird bei Chat_App schon angezeigt, deswegen hier nicht mehr