from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) from django import forms import random class Constants(BaseConstants): name_in_url = 'survey' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): # --- set round results and player's payoff # ------------------------------------------------------------------------------------------------------------------ pay_this_round = models.BooleanField() round_result = models.CurrencyField() def set_payoff(self): # determine round_result as (potential) payoff per round if self.bomb: self.round_result = c(0) else: self.round_result = self.boxes_collected * Constants.box_value # set payoffs if to round_result of randomly chosen round # randomly determine round to pay on player level if self.subsession.round_number == 1: self.participant.vars['round_to_pay'] = random.randint(1,Constants.num_rounds) if Constants.random_payoff: if self.subsession.round_number == self.participant.vars['round_to_pay']: self.pay_this_round = True self.payoff = self.round_result else: self.pay_this_round = False self.payoff = c(0) # set payoffs to round_result if else: self.payoff = self.round_result Q0 = models.IntegerField(verbose_name='', widget=widgets.Slider(), min=1, max=10) Q1 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='1. 自分の好みと友人の好みが違うことを認める。', widget=forms.Select()) Q2 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='2. 大自然の中でキャンプをする。', widget=forms.Select()) Q3 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='3. 競馬で一日の収入を賭ける。', widget=forms.Select()) Q4 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='4. 年収の10%を中庸成長型の投資信託に投資する。', widget=forms.Select()) Q5 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='5. 社交場で大量の酒を飲む。', widget=forms.Select()) Q6 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='6. 既婚者と不倫する。', widget=forms.Select()) Q7 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='7. 職業を詐称する。', widget=forms.Select()) Q8 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='8. 自分の能力を超えたスキー場を下る。', widget=forms.Select()) Q9 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='9. 年収の5%を投機的な株に投資する。', widget=forms.Select()) Q10 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='10. 水位の高い時期に急流ラフティングをする。', widget=forms.Select()) Q11 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='11. スポーツイベントの結果に一日の収入を賭ける。', widget=forms.Select()) Q12 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='12. 友人の秘密を他人に明かす。', widget=forms.Select()) Q13 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='13. シートベルトをしないで車を運転する。', widget=forms.Select()) Q14 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='14. 新しいビジネスベンチャーに年収の10%を投資する。', widget=forms.Select()) Q15 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='15. ヘルメットなしでオートバイに乗る。', widget=forms.Select()) Q16 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='16. より安定する仕事よりも、自分が心から楽しめる仕事を選ぶ。', widget=forms.Select()) Q17 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='17. 職場の会議で、人気のない問題について自分の意見を言う。', widget=forms.Select()) Q18 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='18. 日焼け止めを塗らずに日光浴をする。', widget=forms.Select()) Q19 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='19. 高い橋からバンジージャンプで飛び降りる。', widget=forms.Select()) Q20 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='20. 小さな飛行機を操縦する。', widget=forms.Select()) Q21 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='21. 夜、町の安全ではない地域を一人で歩いて家に帰る。', widget=forms.Select()) Q22 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='22. 家族から遠く離れた街に引っ越す。', widget=forms.Select()) Q23 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='23. 30代半ばで新しい仕事を始める。', widget=forms.Select()) Q24 = models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='24. 用事で幼い子どもを一人にして家にいる。', widget=forms.Select()) Q25= models.CharField(initial=None, choices=['A:非常に高い','B:高い','C:普通','D:低い','E:非常に低い'], verbose_name='25. 200ドル入った財布を見つけても、届け出ない。', widget=forms.Select())