from otree.api import * doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'PRSvsPC' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): Choice=models.IntegerField( choices=[ [1,'グー'], [2,'チョキ'], [3,'パー'], ], widget=widgets.RadioSelectHorizontal, label="" ) Choice_PC=models.IntegerField() Win=models.IntegerField() # FUNCTIONS def creating_session(subsession: Subsession): for p in subsession.get_players(): import random p.Choice_PC = random.choice([1,2,3]) def win_lose(player: Player): if player.Choice == player.Choice_PC: player.Win = 0 elif player.Choice == player.Choice_PC -1 or (player.Choice == 3 and player.Choice_PC == 1): player.Win = 1 else: player.Win= -1 def set_payoffs(group: Group): for p in group.get_players(): p.Choice_Other = p.get_others_in_group()[0].choice # PAGES class Decision(Page): form_model='player' form_fields=['Choice'] @staticmethod def before_next_page(player,timeout_happened): win_lose(player) class ResultsWaitPage(WaitPage): after_all_players_arrive=set_payoffs class Results(Page): pass page_sequence = [Decision, ResultsWaitPage, Results]