from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random import string doc = """ これは3人グループで行われるゲームです。 """ class Constants(BaseConstants): name_in_url = 'public_goods_resettlement' players_per_group = 3 num_rounds = 5 instructions_template = 'public_goods_resettlement_fukushima/instructions.html' # """Amount allocated to each player""" multiplier = 1 endowment = 0 class Subsession(BaseSubsession): def creating_sessions(self): self.group_randomly() class Group(BaseGroup): divisionQ1 = models.IntegerField( choices = [ [0, '犠牲者は0%、その他は50%ずつ獲得'], [1, '犠牲者は10%、その他は45%ずつ獲得'], [2, '犠牲者は20%、その他は40%ずつ獲得'], [3, '犠牲者は30%、その他は35%ずつ獲得'], [4, '犠牲者は40%、その他は30%ずつ獲得'], [5, '犠牲者は50%、その他は25%ずつ獲得'], [6, '犠牲者は60%、その他は20%ずつ獲得'], [7, '犠牲者は70%、その他は15%ずつ獲得'], [8, '犠牲者は80%、その他は10%ずつ獲得'], [9, '犠牲者は90%、その他は5%ずつ獲得'], [10, '犠牲者は100%、その他は0%ずつ獲得'], ], widget = widgets.RadioSelect, label = '''それでは収入の配分を決めたいと思います。結果はチーム内の平均値が適用されます。以下の中から最も適当と思われる配分を選んでください。''') divisionQ2 = models.IntegerField( choices = [ [0, '犠牲者は0%、その他は50%ずつ獲得'], [1, '犠牲者は10%、その他は45%ずつ獲得'], [2, '犠牲者は20%、その他は40%ずつ獲得'], [3, '犠牲者は30%、その他は35%ずつ獲得'], [4, '犠牲者は40%、その他は30%ずつ獲得'], [5, '犠牲者は50%、その他は25%ずつ獲得'], [6, '犠牲者は60%、その他は20%ずつ獲得'], [7, '犠牲者は70%、その他は15%ずつ獲得'], [8, '犠牲者は80%、その他は10%ずつ獲得'], [9, '犠牲者は90%、その他は5%ずつ獲得'], [10, '犠牲者は100%、その他は0%ずつ獲得'], ], widget = widgets.RadioSelect, label = '''それでは収入の配分を決めたいと思います。結果はチーム内の平均値が適用されます。以下の中から最も適当と思われる配分を選んでください。''') divisionQ3 = models.IntegerField( choices = [ [0, '犠牲者は0%、その他は50%ずつ獲得'], [1, '犠牲者は10%、その他は45%ずつ獲得'], [2, '犠牲者は20%、その他は40%ずつ獲得'], [3, '犠牲者は30%、その他は35%ずつ獲得'], [4, '犠牲者は40%、その他は30%ずつ獲得'], [5, '犠牲者は50%、その他は25%ずつ獲得'], [6, '犠牲者は60%、その他は20%ずつ獲得'], [7, '犠牲者は70%、その他は15%ずつ獲得'], [8, '犠牲者は80%、その他は10%ずつ獲得'], [9, '犠牲者は90%、その他は5%ずつ獲得'], [10, '犠牲者は100%、その他は0%ずつ獲得'], ], widget = widgets.RadioSelect, label = '''それでは収入の配分を決めたいと思います。結果はチーム内の平均値が適用されます。以下の中から最も適当と思われる配分を選んでください。''') def set_payoffs(self): for p in self.get_players(): if p.id_in_group == 1: p.payoff = 100 * round (((self.divisionQ1 + self.divisionQ2 + self.divisionQ3)/3),0) * 0.1 else: p.payoff = 30 + 100 * (10- round (((self.divisionQ1 + self.divisionQ2 + self.divisionQ3)/3),0)) * 0.05 class Player(BasePlayer): feelings1_1 = models.IntegerField( choices=[ [1, 'とても不満足'], [2, '不満足'], [3, '普通'], [4, '満足'], [5, 'とても満足'], ], label='''あなたの今のところの満足度を答えてください。''' ) feelings1_2 = models.IntegerField( choices=[ [1, 'とても不満足'], [2, '不満足'], [3, '普通'], [4, '満足'], [5, 'とても満足'], ], label='''あなたの今のところの満足度を答えてください。''' ) #Questions and Answers 1A to 1Z def randomkey1A(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1A = models.StringField(initial = randomkey1A(5)) def randomkey1B(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1B = models.StringField(initial = randomkey1B(5)) def randomkey1C(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1C = models.StringField(initial = randomkey1C(5)) def randomkey1D(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1D = models.StringField(initial = randomkey1D(5)) def randomkey1E(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1E = models.StringField(initial = randomkey1E(5)) def randomkey1F(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1F = models.StringField(initial = randomkey1F(5)) def randomkey1G(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1G = models.StringField(initial = randomkey1G(5)) def randomkey1H(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1H = models.StringField(initial = randomkey1H(5)) def randomkey1I(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1I = models.StringField(initial = randomkey1I(5)) def randomkey1J(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1J = models.StringField(initial = randomkey1J(5)) def randomkey1K(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1K = models.StringField(initial = randomkey1K(5)) def randomkey1L(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1L = models.StringField(initial = randomkey1L(5)) def randomkey1M(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1M = models.StringField(initial = randomkey1M(5)) def randomkey1N(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1N = models.StringField(initial = randomkey1N(5)) def randomkey1O(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1O = models.StringField(initial = randomkey1O(5)) def randomkey1P(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1P = models.StringField(initial = randomkey1P(5)) def randomkey1Q(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1Q = models.StringField(initial = randomkey1Q(5)) def randomkey1R(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1R = models.StringField(initial = randomkey1R(5)) def randomkey1S(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1S = models.StringField(initial = randomkey1S(5)) def randomkey1T(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1T = models.StringField(initial = randomkey1T(5)) def randomkey1U(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1U = models.StringField(initial = randomkey1U(5)) def randomkey1V(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1V = models.StringField(initial = randomkey1V(5)) def randomkey1W(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1W = models.StringField(initial = randomkey1W(5)) def randomkey1X(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1X = models.StringField(initial = randomkey1X(5)) def randomkey1Y(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1Y = models.StringField(initial = randomkey1Y(5)) def randomkey1Z(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que1Z = models.StringField(initial = randomkey1Z(5)) #Answer forms ans1A = models.StringField(blank=True, null=True) ans1B = models.StringField(blank=True, null=True) ans1C = models.StringField(blank=True, null=True) ans1D = models.StringField(blank=True, null=True) ans1E = models.StringField(blank=True, null=True) ans1F = models.StringField(blank=True, null=True) ans1G = models.StringField(blank=True, null=True) ans1H = models.StringField(blank=True, null=True) ans1I = models.StringField(blank=True, null=True) ans1J = models.StringField(blank=True, null=True) ans1K = models.StringField(blank=True, null=True) ans1L = models.StringField(blank=True, null=True) ans1M = models.StringField(blank=True, null=True) ans1N = models.StringField(blank=True, null=True) ans1O = models.StringField(blank=True, null=True) ans1P = models.StringField(blank=True, null=True) ans1Q = models.StringField(blank=True, null=True) ans1R = models.StringField(blank=True, null=True) ans1S = models.StringField(blank=True, null=True) ans1T = models.StringField(blank=True, null=True) ans1U = models.StringField(blank=True, null=True) ans1V = models.StringField(blank=True, null=True) ans1W = models.StringField(blank=True, null=True) ans1X = models.StringField(blank=True, null=True) ans1Y = models.StringField(blank=True, null=True) ans1Z = models.StringField(blank=True, null=True) def vars_for_admin_report(): ans1A = [ p.ans1A for p in self.get_players() ] ans1B = [ p.ans1B for p in self.get_players() ] ans1C = [ p.ans1C for p in self.get_players() ] ans1D = [ p.ans1D for p in self.get_players() ] ans1E = [ p.ans1E for p in self.get_players() ] ans1F = [ p.ans1F for p in self.get_players() ] ans1G = [ p.ans1G for p in self.get_players() ] ans1H = [ p.ans1H for p in self.get_players() ] ans1I = [ p.ans1I for p in self.get_players() ] ans1J = [ p.ans1J for p in self.get_players() ] ans1K = [ p.ans1K for p in self.get_players() ] ans1L = [ p.ans1L for l in self.get_players() ] ans1M = [ p.ans1M for p in self.get_players() ] ans1N = [ p.ans1N for p in self.get_players() ] ans1O = [ p.ans1O for p in self.get_players() ] ans1P = [ p.ans1P for p in self.get_players() ] ans1Q = [ p.ans1Q for p in self.get_players() ] ans1R = [ p.ans1R for p in self.get_players() ] ans1S = [ p.ans1S for p in self.get_players() ] ans1T = [ p.ans1T for p in self.get_players() ] ans1U = [ p.ans1U for p in self.get_players() ] ans1V = [ p.ans1V for p in self.get_players() ] ans1W = [ p.ans1W for p in self.get_players() ] ans1X = [ p.ans1X for p in self.get_players() ] ans1Y = [ p.ans1Y for p in self.get_players() ] ans1Z = [ p.ans1Z for p in self.get_players() ] earning1 = models.CurrencyField(initial=0) if que1A == ans1A: earning1 += 5 if que1B == ans1B: earning1 += 5 if que1C == ans1C: earning1 += 5 if que1D == ans1D: earning1 += 5 if que1E == ans1E: earning1 += 5 if que1F == ans1F: earning1 += 5 if que1G == ans1G: earning1 += 5 if que1H == ans1H: earning1 += 5 if que1I == ans1I: earning1 += 5 if que1J == ans1J: earning1 += 5 if que1K == ans1K: earning1 += 5 if que1L == ans1L: earning1 += 5 if que1M == ans1M: earning1 += 5 if que1N == ans1N: earning1 += 5 if que1O == ans1O: earning1 += 5 if que1P == ans1P: earning1 += 5 if que1Q == ans1Q: earning1 += 5 if que1R == ans1R: earning1 += 5 if que1S == ans1S: earning1 += 5 if que1T == ans1T: earning1 += 5 if que1U == ans1U: earning1 += 5 if que1V == ans1V: earning1 += 5 if que1W == ans1W: earning1 += 5 if que1X == ans1X: earning1 += 5 if que1Y == ans1Y: earning1 += 5 if que1Z == ans1Z: earning1 += 5