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_1020' players_per_group = 3 num_rounds = 5 instructions_template = 'public_goods_resettlement_1020/instructions.html' # """Amount allocated to each player""" multiplier = 1 endowment = 0 class Subsession(BaseSubsession): def creating_rounds(self): self.group_randomly(fixed_id_in_group=False) class Group(BaseGroup): divisionQ1 = models.IntegerField() def set_division(self): self.divisionQ1 = random.randint(0,9) #↑完全ランダムじゃなくて代表点になったら変わる! def set_earning1(self): for p in self.get_players(): p.earning1 = 0 if p.que1A == p.ans1A: p.earning1 += 1 if p.que1B == p.ans1B: p.earning1 += 1 if p.que1C == p.ans1C: p.earning1 += 1 if p.que1D == p.ans1D: p.earning1 += 1 if p.que1E == p.ans1E: p.earning1 += 1 if p.que1F == p.ans1F: p.earning1 += 1 if p.que1G == p.ans1G: p.earning1 += 1 if p.que1H == p.ans1H: p.earning1 += 1 if p.que1I == p.ans1I: p.earning1 += 1 if p.que1J == p.ans1J: p.earning1 += 1 if p.que1K == p.ans1K: p.earning1 += 1 if p.que1L == p.ans1L: p.earning1 += 1 if p.que1M == p.ans1M: p.earning1 += 1 if p.que1N == p.ans1N: p.earning1 += 1 if p.que1O == p.ans1O: p.earning1 += 1 if p.que1P == p.ans1P: p.earning1 += 1 if p.que1Q == p.ans1Q: p.earning1 += 1 if p.que1R == p.ans1R: p.earning1 += 1 if p.que1S == p.ans1S: p.earning1 += 1 if p.que1T == p.ans1T: p.earning1 += 1 if p.que1U == p.ans1U: p.earning1 += 1 if p.que1V == p.ans1V: p.earning1 += 1 if p.que1W == p.ans1W: p.earning1 += 1 if p.que1X == p.ans1X: p.earning1 += 1 if p.que1Y == p.ans1Y: p.earning1 += 1 if p.que1Z == p.ans1Z: p.earning1 += 1 def set_borders1(self): for p in self.get_players(): p.border1 = 0 if p.earning1 < 2: p.border1 = 0 else: p.border1 = 1 def set_earning2(self): for p in self.get_players(): p.earning2 = 0 if p.que2A == p.ans2A: p.earning2 += 1 if p.que2B == p.ans2B: p.earning2 += 1 if p.que2C == p.ans2C: p.earning2 += 1 if p.que2D == p.ans2D: p.earning2 += 1 if p.que2E == p.ans2E: p.earning2 += 1 if p.que2F == p.ans2F: p.earning2 += 1 if p.que2G == p.ans2G: p.earning2 += 1 if p.que2H == p.ans2H: p.earning2 += 1 if p.que2I == p.ans2I: p.earning2 += 1 if p.que2J == p.ans2J: p.earning2 += 1 if p.que2K == p.ans2K: p.earning2 += 1 if p.que2L == p.ans2L: p.earning2 += 1 if p.que2M == p.ans2M: p.earning2 += 1 if p.que2N == p.ans2N: p.earning2 += 1 if p.que2O == p.ans2O: p.earning2 += 1 if p.que2P == p.ans2P: p.earning2 += 1 if p.que2Q == p.ans2Q: p.earning2 += 1 if p.que2R == p.ans2R: p.earning2 += 1 if p.que2S == p.ans2S: p.earning2 += 1 if p.que2T == p.ans2T: p.earning2 += 1 if p.que2U == p.ans2U: p.earning2 += 1 if p.que2V == p.ans2V: p.earning2 += 1 if p.que2W == p.ans2W: p.earning2 += 1 if p.que2X == p.ans2X: p.earning2 += 1 if p.que2Y == p.ans2Y: p.earning2 += 1 if p.que2Z == p.ans2Z: p.earning2 += 1 def set_borders2(self): for p in self.get_players(): p.border2 = 0 if p.earning2 < 2: p.border2 = 0 else: p.border2 = 1 def set_payoffs(self): for p in self.get_players(): if self.divisionQ1 == 0: if p.id_in_group == 1: p.payoff = 70 + 100 * p.border2 else: p.payoff = 100 * p.border1 + 150 * p.border2 if self.divisionQ1 == 1: if p.id_in_group == 1: p.payoff = 70 + 120 * p.border2 else: p.payoff = 100 * p.border1 + 175 * p.border2 if self.divisionQ1 == 2: if p.id_in_group == 1: p.payoff = 70 + 140 * p.border2 else: p.payoff = 100 * p.border1 + 200 * p.border2 if self.divisionQ1 == 3: if p.id_in_group == 1: p.payoff = 70 + 160 * p.border2 else: p.payoff = 100 * p.border1 + 225 * p.border2 if self.divisionQ1 == 4: if p.id_in_group == 1: p.payoff = 70 + 180 * p.border2 else: p.payoff = 100 * p.border1 + 260 * p.border2 if self.divisionQ1 == 5: if p.id_in_group == 1: p.payoff = 70 + 200 * p.border2 else: p.payoff = 100 * p.border1 + 250 * p.border2 if self.divisionQ1 == 6: if p.id_in_group == 1: p.payoff = 70 + 220 * p.border2 else: p.payoff = 100 * p.border1 + 240 * p.border2 if self.divisionQ1 == 7: if p.id_in_group == 1: p.payoff = 70 + 240 * p.border2 else: p.payoff = 100 * p.border1 + 230 * p.border2 if self.divisionQ1 == 8: if p.id_in_group == 1: p.payoff = 70 + 260 * p.border2 else: p.payoff = 100 * p.border1 + 220 * p.border2 if self.divisionQ1 == 9: if p.id_in_group == 1: p.payoff = 70 + 280 * p.border2 else: p.payoff = 100 * p.border1 + 210 * p.border2 if self.divisionQ1 == 10: if p.id_in_group == 1: p.payoff = 100 * p.border1 + 100 * p.border2 else: p.payoff = 100 * p.border1 + 100 * p.border2 class Player(BasePlayer): divisionQue1 = models.IntegerField( choices = [ [0, '選択肢A'], [1, '選択肢B'], [2, '選択肢C'], [3, '選択肢D'], [4, '選択肢E'], [5, '選択肢F'], [6, '選択肢G'], [7, '選択肢H'], [8, '選択肢I'], [9, '選択肢J'], [10, '選択肢K'] ], widget = widgets.RadioSelect, label = '''選択肢の希望を入力してください。''') feelings1_1 = models.IntegerField( choices=[ [1, 'とても不満足'], [2, '不満足'], [3, '普通'], [4, '満足'], [5, 'とても満足'], ], label='''あなたの今のところの満足度を答えてください。''' ) feelings1_2 = models.IntegerField( choices=[ [1, 'とても不満足'], [2, '不満足'], [3, '普通'], [4, '満足'], [5, 'とても満足'], ], label='''あなたの今のところの満足度を答えてください。''' ) feelings1_3 = models.IntegerField( choices=[ [1, 'とても不満足'], [2, '不満足'], [3, '普通'], [4, '満足'], [5, 'とても満足'], ], label='''あなたの今のところの満足度を答えてください。''' ) earning1 = models.IntegerField() earning2 = models.IntegerField() border1 = models.IntegerField() border2 = models.IntegerField() #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() ] #Questions and Answers 2A to 2Z def randomkey2A(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2A = models.StringField(initial = randomkey2A(5)) def randomkey2B(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2B = models.StringField(initial = randomkey2B(5)) def randomkey2C(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2C = models.StringField(initial = randomkey2C(5)) def randomkey2D(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2D = models.StringField(initial = randomkey2D(5)) def randomkey2E(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2E = models.StringField(initial = randomkey2E(5)) def randomkey2F(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2F = models.StringField(initial = randomkey2F(5)) def randomkey2G(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2G = models.StringField(initial = randomkey2G(5)) def randomkey2H(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2H = models.StringField(initial = randomkey2H(5)) def randomkey2I(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2I = models.StringField(initial = randomkey2I(5)) def randomkey2J(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2J = models.StringField(initial = randomkey2J(5)) def randomkey2K(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2K = models.StringField(initial = randomkey2K(5)) def randomkey2L(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2L = models.StringField(initial = randomkey2L(5)) def randomkey2M(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2M = models.StringField(initial = randomkey2M(5)) def randomkey2N(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2N = models.StringField(initial = randomkey2N(5)) def randomkey2O(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2O = models.StringField(initial = randomkey2O(5)) def randomkey2P(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2P = models.StringField(initial = randomkey2P(5)) def randomkey2Q(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2Q = models.StringField(initial = randomkey2Q(5)) def randomkey2R(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2R = models.StringField(initial = randomkey2R(5)) def randomkey2S(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2S = models.StringField(initial = randomkey2S(5)) def randomkey2T(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2T = models.StringField(initial = randomkey2T(5)) def randomkey2U(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2U = models.StringField(initial = randomkey2U(5)) def randomkey2V(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2V = models.StringField(initial = randomkey2V(5)) def randomkey2W(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2W = models.StringField(initial = randomkey2W(5)) def randomkey2X(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2X = models.StringField(initial = randomkey2X(5)) def randomkey2Y(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2Y = models.StringField(initial = randomkey2Y(5)) def randomkey2Z(n): randlist = [random.choice(string.digits) for i in range(n)] return ''.join(randlist) que2Z = models.StringField(initial = randomkey2Z(5)) #Answer forms ans2A = models.StringField(blank=True, null=True) ans2B = models.StringField(blank=True, null=True) ans2C = models.StringField(blank=True, null=True) ans2D = models.StringField(blank=True, null=True) ans2E = models.StringField(blank=True, null=True) ans2F = models.StringField(blank=True, null=True) ans2G = models.StringField(blank=True, null=True) ans2H = models.StringField(blank=True, null=True) ans2I = models.StringField(blank=True, null=True) ans2J = models.StringField(blank=True, null=True) ans2K = models.StringField(blank=True, null=True) ans2L = models.StringField(blank=True, null=True) ans2M = models.StringField(blank=True, null=True) ans2N = models.StringField(blank=True, null=True) ans2O = models.StringField(blank=True, null=True) ans2P = models.StringField(blank=True, null=True) ans2Q = models.StringField(blank=True, null=True) ans2R = models.StringField(blank=True, null=True) ans2S = models.StringField(blank=True, null=True) ans2T = models.StringField(blank=True, null=True) ans2U = models.StringField(blank=True, null=True) ans2V = models.StringField(blank=True, null=True) ans2W = models.StringField(blank=True, null=True) ans2X = models.StringField(blank=True, null=True) ans2Y = models.StringField(blank=True, null=True) ans2Z = models.StringField(blank=True, null=True) def vars_for_admin_report(): ans2A = [ p.ans2A for p in self.get_players() ] ans2B = [ p.ans2B for p in self.get_players() ] ans2C = [ p.ans2C for p in self.get_players() ] ans2D = [ p.ans2D for p in self.get_players() ] ans2E = [ p.ans2E for p in self.get_players() ] ans2F = [ p.ans2F for p in self.get_players() ] ans2G = [ p.ans2G for p in self.get_players() ] ans2H = [ p.ans2H for p in self.get_players() ] ans2I = [ p.ans2I for p in self.get_players() ] ans2J = [ p.ans2J for p in self.get_players() ] ans2K = [ p.ans2K for p in self.get_players() ] ans2L = [ p.ans2L for l in self.get_players() ] ans2M = [ p.ans2M for p in self.get_players() ] ans2N = [ p.ans2N for p in self.get_players() ] ans2O = [ p.ans2O for p in self.get_players() ] ans2P = [ p.ans2P for p in self.get_players() ] ans2Q = [ p.ans2Q for p in self.get_players() ] ans2R = [ p.ans2R for p in self.get_players() ] ans2S = [ p.ans2S for p in self.get_players() ] ans2T = [ p.ans2T for p in self.get_players() ] ans2U = [ p.ans2U for p in self.get_players() ] ans2V = [ p.ans2V for p in self.get_players() ] ans2W = [ p.ans2W for p in self.get_players() ] ans2X = [ p.ans2X for p in self.get_players() ] ans2Y = [ p.ans2Y for p in self.get_players() ] ans2Z = [ p.ans2Z for p in self.get_players() ]