from otree.api import * from otree.api import models, Page, WaitPage, Currency as c, currency_range import time, random author = 'Your name here' doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'ultimatum' PLAYERS_PER_GROUP = 2 NUM_ROUNDS = 1 endowment = c(1000) currency_range(0, 1000, 1) class Subsession(BaseSubsession): pass class Group(BaseGroup): proposal = models.CurrencyField( choices=currency_range(c(0), c(C.endowment),c(1)), label="あなたはいくら相手に渡しますか?", ) accepted_or_not = models.BooleanField( doc="あなたは提案を受け入れますか?", initial=0, ) proposer_point = models.CurrencyField() accepter_point = models.CurrencyField() def compute(group): if group.accepted_or_not==True: group.proposer_point = C.endowment - group.proposal group.accepter_point = group.proposal else: group.proposer_point = 0 group.accepter_point = 0 class Player(BasePlayer): pass ################# class Page1(Page): pass class Page2(Page): form_model = 'group' form_fields = ['proposal'] def is_displayed(player): return player.id_in_group == 1 class Page3(WaitPage): pass class Page4(Page): form_model = 'group' form_fields = ['accepted_or_not'] def is_displayed(player): return player.id_in_group == 2 class Page5(WaitPage): template_name = 'ultimatum/ResultsWaitProposer.html' body_text = '' title_text = '' def after_all_players_arrive(group): group.compute() class Page6(Page): pass class ResultsWaitPage(WaitPage): template_name = 'ultimatum/ResultsWaitResponder.html' body_text = '' title_text = '' class Results(Page): pass page_sequence = [ Page1, Page5, Page2, ResultsWaitPage, Page4, Page5, Page6, Results ]