from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random author = 'Sunduz Divle' doc = """ Remote associates test (Turkish) & selection into teams """ class Constants(BaseConstants): name_in_url = 'rat2' players_per_group = 2 minutes_given = 8 payment_per_question = 3 # payment_in_points = 1.5 num_rounds = 1 num_questions = 20 answer_keys = ["BEYAZ", "DEVRI", "ELI", "TOZ", "TOPLU", "YÜKSEK", "BEŞ", "SAATI", "DIK", "MALI", "KIRMIZI", "KARA", "SIRA", "ÖN", "PEŞIN", "DENIZ", "KAPALI", "UZAK", "SOSYAL", "HANE"] answer_keys0 = ["BEYAZ", "DEVRI", "ELI", "TOZ", "TOPLU", "YUKSEK", "BES", "SAATI", "DIK", "MALI", "KIRMIZI", "KARA", "SIRA", "ON", "PESIN", "DENIZ", "KAPALI", "UZAK", "SOSYAL", "HANE"] instructions_template = 'rat/Instructions.html' class Subsession(BaseSubsession): def creating_session(self): self.group_randomly() class Group(BaseGroup): assigned_team2 = models.IntegerField() def assign_team2(self): players = self.get_players() possibilities = [0, 1] random_number = random.random() if random_number < 0.1: p_implement= random.choice(players) self.assigned_team2 = p_implement.team_selection2 for p in players: p.assigned_team2 = p_implement.team_selection2 elif random_number < 0.4: self.assigned_team2 = 0 for p in players: p.assigned_team2 = 0 else: self.assigned_team2 = 1 for p in players: p.assigned_team2 = 1 for p in players: p.participant.vars['assigned_team2'] = p.assigned_team2 def set_guess_payoffs2(self): players = self.get_players() p1 = self.get_player_by_id(1) p2 = self.get_player_by_id(2) if self.assigned_team2 == 1: for p in players: if p.team_performance2 == p.participant.vars['guess_team2']: p.payoff_guess_team2= 2 else: p.payoff_guess_team2= 2 elif self.assigned_team2 == 0 and random.random() < 0.5 : if p1.participant.vars['guess_others2'] == p2.rat_total_correct2: p1.payoff_guess22 = 2 else: p1.payoff_guess22 = 0 if p2.participant.vars['guess_others2'] == p1.rat_total_correct2: p2.payoff_guess22 = 2 else: p2.payoff_guess22 = 0 else: for p in players: if p.participant.vars['self_confidence2']== p.rat_total_correct2: p.payoff_guess11 = 2 else: p.payoff_guess11 = 0 for p in players: p.participant.vars['payoff_guess11'] = p.payoff_guess11 print ("Player:", "payoff_guess11", p.participant.vars['payoff_guess11']) p.participant.vars['payoff_guess22'] = p.payoff_guess22 print ("Player:", "payoff_guess22", p.participant.vars['payoff_guess22']) p.participant.vars['payoff_guess_team2'] = p.payoff_guess_team2 print ("Player:", "payoff_guess_team2", p.participant.vars['payoff_guess_team2']) def set_payoffs2(self): players = self.get_players() for p in players: p.total_correct2 = p.rat_total_correct2 print("Player:", p.id_in_group, " total number of correct answers is", p.total_correct2) if p.participant.vars['assigned_team2'] == 1: self.assigned_team2 = 1 else: self.assigned_team2 = 0 if self.assigned_team2 == 1: print("Player:", p.id_in_group, " works in a team") for p in players: p.team_performance2 = sum([p.total_correct2 for p in players])*1/2 print(p.team_performance2, "Team performance") p.payoff_rat4 = p.team_performance2 * Constants.payment_per_question else: print("Player:", p.id_in_group, " works individually ") for p in players: p.payoff_rat4 = p.total_correct2 * Constants.payment_per_question for p in players: p.participant.vars['payoff_rat_team2'] = p.payoff_rat4 print("Player:", p.id_in_group, " payoff rat_team2:", p.participant.vars['payoff_rat_team2']) class Player(BasePlayer): assigned_team2 = models.IntegerField() rat_total_correct2 = models.IntegerField( initial=0, doc="total number of correct answers" ) rat_total_correct0 = models.IntegerField( initial=0, doc="total number of correct answers" ) total_correct2 = models.IntegerField() team_performance2 = models.FloatField() payoff_guess_team2 = models.FloatField(initial=0) payoff_guess11 = models.FloatField(initial= 0) payoff_guess22 = models.FloatField(initial= 0) payoff_rat4 = models.FloatField() consent = models.BooleanField() zoom = models.BooleanField() zoom_end = models.BooleanField() assignment0 = models.BooleanField() assignment1 = models.BooleanField() team_selection2 = models.IntegerField(label='Şimdi sizden bu bölümde hangi senaryoda oynamak istediğinize karar vermenizi istiyoruz. Ya sizin kararınız uygulanacak ya da bilgisayarın sizin için seçtiği senaryoda oynayacaksınız. Kelime bulma oyununu bireysel olarak mı takım olarak mı oynamak istersiniz?', choices=[ [0, 'Bireysel olarak oynamak istiyorum.'], [1, 'Rastgele atanan bir katılımcı ile takım olarak oynamak istiyorum.'], ], widget=widgets.RadioSelectHorizontal) self_confidence2 = models.IntegerField(label='Tahmininizin doğru olması durumunda kazancınıza ek 2 TL kazanacaksınız.', max=20) guess_others2 = models.IntegerField(label='Tahmininizin doğru olması durumunda kazancınıza ek 2 TL kazanacaksınız.', max=20) guess_team2 = models.IntegerField(label='Tahmininizin doğru olması durumunda kazancınıza ek 2 TL kazanacaksınız.', max=20) q1 = models.StringField(label="Eşya/Perde/Yalan") q2 = models.StringField(label="Buz/Hisse/Lale") q3 = models.StringField(label="Mahkum/Yatkın/Sıkı") q4 = models.StringField(label="Duman/Pembe/Şeker") q5 = models.StringField(label="Katliam/İğne/Konut") q6 = models.StringField(label="Gerilim/Sosyete/Okul") q7 = models.StringField(label="Vakit/Duyu/Kardeş") q8 = models.StringField(label="Yaz/Kum/Masa") q9 = models.StringField(label="Dörtgen/Açı/Yokuş") q10 = models.StringField(label="Müşavir/Analiz/Takvim") q11 = models.StringField(label="Alarm/Işık/Kart") q12 = models.StringField(label="Dut/Haber/Kış") q13 = models.StringField(label="Aklı/Ara/Alfabetik") q14 = models.StringField(label="Sezi/Görü/Koşul") q15 = models.StringField(label="Hüküm/Satış/Ödeme") q16 = models.StringField(label="Ak/Ölü/Kızıl") q17 = models.StringField(label="Çarşı/Gişe/Tribün") q18 = models.StringField(label="Diyar/İhtimal/Doğu") q19 = models.StringField(label="Faaliyet/Hizmet/Güvence") q20 = models.StringField(label="Yemek/Ders/Pasta") q1_correct = models.IntegerField() q2_correct = models.IntegerField() q3_correct = models.IntegerField() q4_correct = models.IntegerField() q5_correct = models.IntegerField() q6_correct = models.IntegerField() q7_correct = models.IntegerField() q8_correct = models.IntegerField() q9_correct = models.IntegerField() q10_correct = models.IntegerField() q11_correct = models.IntegerField() q12_correct = models.IntegerField() q13_correct = models.IntegerField() q14_correct = models.IntegerField() q15_correct = models.IntegerField() q16_correct = models.IntegerField() q17_correct = models.IntegerField() q18_correct = models.IntegerField() q19_correct = models.IntegerField() q20_correct = models.IntegerField() q1_correct0 = models.IntegerField() q2_correct0 = models.IntegerField() q3_correct0 = models.IntegerField() q4_correct0 = models.IntegerField() q5_correct0 = models.IntegerField() q6_correct0 = models.IntegerField() q7_correct0 = models.IntegerField() q8_correct0 = models.IntegerField() q9_correct0 = models.IntegerField() q10_correct0 = models.IntegerField() q11_correct0 = models.IntegerField() q12_correct0 = models.IntegerField() q13_correct0 = models.IntegerField() q14_correct0 = models.IntegerField() q15_correct0 = models.IntegerField() q16_correct0 = models.IntegerField() q17_correct0 = models.IntegerField() q18_correct0 = models.IntegerField() q19_correct0 = models.IntegerField() q20_correct0 = models.IntegerField() def set_performances2(self): self.q1=self.q1.upper() self.q2=self.q2.upper() self.q3=self.q3.upper() self.q4=self.q4.upper() self.q5=self.q5.upper() self.q6=self.q6.upper() self.q7=self.q7.upper() self.q8=self.q8.upper() self.q9=self.q9.upper() self.q10=self.q10.upper() self.q11=self.q11.upper() self.q12=self.q12.upper() self.q13=self.q13.upper() self.q14=self.q14.upper() self.q15=self.q15.upper() self.q16=self.q16.upper() self.q17=self.q17.upper() self.q18=self.q18.upper() self.q19=self.q19.upper() self.q20=self.q20.upper() if self.q1 == Constants.answer_keys[0] or self.q1 == Constants.answer_keys0[0]: self.q1_correct = 1 else: self.q1_correct = 0 if self.q2 == Constants.answer_keys[1] or self.q2 == Constants.answer_keys0[1]: self.q2_correct = 1 else: self.q2_correct = 0 if self.q3 == Constants.answer_keys[2] or self.q3 == Constants.answer_keys0[2]: self.q3_correct = 1 else: self.q3_correct = 0 if self.q4 == Constants.answer_keys[3] or self.q4 == Constants.answer_keys0[3]: self.q4_correct = 1 else: self.q4_correct = 0 if self.q5 == Constants.answer_keys[4] or self.q5 == Constants.answer_keys0[4]: self.q5_correct = 1 else: self.q5_correct = 0 if self.q6 == Constants.answer_keys[5] or self.q6 == Constants.answer_keys0[5]: self.q6_correct = 1 else: self.q6_correct = 0 if self.q7 == Constants.answer_keys[6] or self.q7 == Constants.answer_keys0[6]: self.q7_correct = 1 else: self.q7_correct = 0 if self.q8 == Constants.answer_keys[7] or self.q8 == Constants.answer_keys0[7]: self.q8_correct = 1 else: self.q8_correct = 0 if self.q9 == Constants.answer_keys[8] or self.q9 == Constants.answer_keys0[8]: self.q9_correct = 1 else: self.q9_correct = 0 if self.q10 == Constants.answer_keys[9] or self.q10 == Constants.answer_keys0[9]: self.q10_correct = 1 else: self.q10_correct = 0 if self.q11 == Constants.answer_keys[10] or self.q12 == Constants.answer_keys0[10]: self.q11_correct = 1 else: self.q11_correct = 0 if self.q12 == Constants.answer_keys[11] or self.q12 == Constants.answer_keys0[11]: self.q12_correct = 1 else: self.q12_correct = 0 if self.q13 == Constants.answer_keys[12] or self.q13 == Constants.answer_keys0[12]: self.q13_correct = 1 else: self.q13_correct = 0 if self.q14 == Constants.answer_keys[13] or self.q14 == Constants.answer_keys0[13]: self.q14_correct = 1 else: self.q14_correct = 0 if self.q15 == Constants.answer_keys[14] or self.q15 == Constants.answer_keys0[14]: self.q15_correct = 1 else: self.q15_correct = 0 if self.q16 == Constants.answer_keys[15] or self.q16 == Constants.answer_keys0[15]: self.q16_correct = 1 else: self.q16_correct = 0 if self.q17 == Constants.answer_keys[16] or self.q17 == Constants.answer_keys0[16]: self.q17_correct = 1 else: self.q17_correct = 0 if self.q18 == Constants.answer_keys[17] or self.q18 == Constants.answer_keys0[17]: self.q18_correct = 1 else: self.q18_correct = 0 if self.q19 == Constants.answer_keys[18] or self.q19 == Constants.answer_keys0[18]: self.q19_correct = 1 else: self.q19_correct = 0 if self.q20 == Constants.answer_keys[19] or self.q20 == Constants.answer_keys0[19]: self.q20_correct = 1 else: self.q20_correct = 0 self.rat_total_correct2 = self.q1_correct + \ self.q2_correct + \ self.q3_correct + \ self.q4_correct + \ self.q5_correct + \ self.q6_correct + \ self.q7_correct + \ self.q8_correct + \ self.q9_correct + \ self.q10_correct + \ self.q11_correct + \ self.q12_correct + \ self.q13_correct + \ self.q14_correct + \ self.q15_correct + \ self.q16_correct + \ self.q17_correct + \ self.q18_correct + \ self.q19_correct + \ self.q20_correct # print("RAT: Total number of correct answers", self.rat_total_correct) return (self.rat_total_correct2) def set_performances0(self): self.q1=self.q1.upper() self.q2=self.q2.upper() self.q3=self.q3.upper() self.q4=self.q4.upper() self.q5=self.q5.upper() self.q6=self.q6.upper() self.q7=self.q7.upper() self.q8=self.q8.upper() self.q9=self.q9.upper() self.q10=self.q10.upper() self.q11=self.q11.upper() self.q12=self.q12.upper() self.q13=self.q13.upper() self.q14=self.q14.upper() self.q15=self.q15.upper() self.q16=self.q16.upper() self.q17=self.q17.upper() self.q18=self.q18.upper() self.q19=self.q19.upper() self.q20=self.q20.upper() if self.q1 == Constants.answer_keys[0]: self.q1_correct0 = 1 else: self.q1_correct0 = 0 if self.q2 == Constants.answer_keys[1]: self.q2_correct0 = 1 else: self.q2_correct0 = 0 if self.q3 == Constants.answer_keys[2]: self.q3_correct0 = 1 else: self.q3_correct0 = 0 if self.q4 == Constants.answer_keys[3]: self.q4_correct0 = 1 else: self.q4_correct0 = 0 if self.q5 == Constants.answer_keys[4]: self.q5_correct0 = 1 else: self.q5_correct0 = 0 if self.q6 == Constants.answer_keys[5]: self.q6_correct0 = 1 else: self.q6_correct0 = 0 if self.q7 == Constants.answer_keys[6]: self.q7_correct0 = 1 else: self.q7_correct0 = 0 if self.q8 == Constants.answer_keys[7]: self.q8_correct0 = 1 else: self.q8_correct0 = 0 if self.q9 == Constants.answer_keys[8]: self.q9_correct0 = 1 else: self.q9_correct0 = 0 if self.q10 == Constants.answer_keys[9]: self.q10_correct0 = 1 else: self.q10_correct0 = 0 if self.q11 == Constants.answer_keys[10]: self.q11_correct0 = 1 else: self.q11_correct0 = 0 if self.q12 == Constants.answer_keys[11]: self.q12_correct0 = 1 else: self.q12_correct0 = 0 if self.q13 == Constants.answer_keys[12]: self.q13_correct0 = 1 else: self.q13_correct0 = 0 if self.q14 == Constants.answer_keys[13]: self.q14_correct0 = 1 else: self.q14_correct0 = 0 if self.q15 == Constants.answer_keys[14]: self.q15_correct0 = 1 else: self.q15_correct0 = 0 if self.q16 == Constants.answer_keys[15]: self.q16_correct0 = 1 else: self.q16_correct0 = 0 if self.q17 == Constants.answer_keys[16]: self.q17_correct0 = 1 else: self.q17_correct0 = 0 if self.q18 == Constants.answer_keys[17]: self.q18_correct0 = 1 else: self.q18_correct0 = 0 if self.q19 == Constants.answer_keys[18]: self.q19_correct0 = 1 else: self.q19_correct0 = 0 if self.q20 == Constants.answer_keys[19]: self.q20_correct0 = 1 else: self.q20_correct0 = 0 self.rat_total_correct0 = self.q1_correct0 + \ self.q2_correct0 + \ self.q3_correct0 + \ self.q4_correct0 + \ self.q5_correct0 + \ self.q6_correct0 + \ self.q7_correct0 + \ self.q8_correct0 + \ self.q9_correct0 + \ self.q10_correct0 + \ self.q11_correct0 + \ self.q12_correct0 + \ self.q13_correct0 + \ self.q14_correct0 + \ self.q15_correct0 + \ self.q16_correct0 + \ self.q17_correct0 + \ self.q18_correct0 + \ self.q19_correct0 + \ self.q20_correct0 # print("RAT: Total number of correct answers", self.rat_total_correct) return (self.rat_total_correct0)