from otree.api import * author = 'Alistair Munro, Fitawhidan Nashuha, and Gerald Ezra Charles' doc = """ Coin-Flip Gambling Task by Fitawhidan Nashuha (Trial Rounds). """ GAME_PARAMS = [ {"multiplier": 1.2, "prob": 0.2969}, {"multiplier": 1.5, "prob": 0.2714}, {"multiplier": 2.0, "prob": 0.2375}, {"multiplier": 1.3, "prob": 0.2879}, {"multiplier": 1.8, "prob": 0.25}, ] class C(BaseConstants): NAME_IN_URL = 'e1_coin_nash_trial' PLAYERS_PER_GROUP = None NUM_ROUNDS = 5 INITIAL_BALANCE = cu(50000) # starting credits class Subsession(BaseSubsession): def creating_session(self): for p in self.get_players(): if self.round_number == 1: p.participant.vars['balance'] = C.INITIAL_BALANCE p.participant.vars['play_next_round'] = True index = (self.round_number - 1) % len(GAME_PARAMS) params = GAME_PARAMS[index] p.multiplier = params["multiplier"] p.win_probability = params["prob"] class Group(BaseGroup): pass class Player(BasePlayer): final_balance = models.CurrencyField() multiplier = models.FloatField() win_probability = models.FloatField() round_payoff = models.CurrencyField() coin_result = models.StringField() round_win = models.BooleanField() def set_final_balance(player): if player.round_number == C.NUM_ROUNDS: player.final_balance = player.participant.vars.get('balance', 0) def vars_for_template(player): return dict( round_number=player.round_number ) bet_amount = models.CurrencyField( choices=[ (cu(x), f"{x:,}".replace(",", ".")) for x in range(0, 50001, 500) ], label='Berapa nominal yang hendak Anda pertaruhkan di ronde ini?
' 'Pilih dari pilihan yang tersedia di kotak di bawah ini.', ) choice = models.StringField( choices=[['H', 'Kepala'], ['T', 'Ekor']], widget=widgets.RadioSelect, label='

Pilihlah salah satu:

' ) # Next Round? ## Consent play_round = models.BooleanField( choices=[[True, 'Ya, Saya ingin bermain'], [False, 'Tidak, Saya ingin berhenti bermain']], widget=widgets.RadioSelect, label='

Apakah Anda ingin bermain di Ronde ini?

' ) play_round_sure = models.BooleanField( choices= [[True, 'Ya, Saya yakin untuk menyudahi permainan'], [False, 'Tidak, Saya ingin melanjutkan permainan'], ], widget=widgets.RadioSelect, label='

Apakah Anda yakin untuk keluar dari permainan ini?

' ) comprehension_check_1 = models.StringField( label='

Pembayaran bonus akan didasarkan pada apa?

', choices=[['1', 'Pilihan dibuat hanya dalam suatu ronde'], ['2', 'Pilihan dibuat hanya dalam ronde latihan'], ['3', 'Saldo di akhir permainan'], ['4', 'Keberuntungan di ronde terakhir'] ], widget = widgets.RadioSelect, ) comprehension_check_2 = models.StringField( label='

Siapa yang menentukan hasil setiap putaran?

', choices=[['1', 'Partisipan (Saya)'], ['2', 'Para peneliti (secara manual)'], ['3', 'Sistem permainan (algoritma permainan)'], ['4', 'Partisipan lain'], ], widget = widgets.RadioSelect )