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 = 'rat' players_per_group = 2 minutes_given = 8 payment_per_question = 3 # payment_in_points = 1.5 num_rounds = 1 num_questions = 20 answer_keys = ["KÖR", "BÖREĞI", "YILDIZI", "KUŞU", "TAKMA", "YEDEK", "DÖRT", "KUVVET", "HAZIR", "OYU", "ANA", "DIL", "MANEVI", "MADDE", "ESKI", "SU", "NÜKLEER", "BEZI", "DEĞER", "YAN"] answer_keys0 = ["KOR", "BOREGI", "YILDIZI", "KUSU", "TAKMA", "YEDEK", "DORT", "KUVVET", "HAZIR", "OYU", "ANA", "DIL", "MANEVI", "MADDE", "ESKI", "SU", "NUKLEER", "BEZI", "DEGER", "YAN"] instructions_template = 'rat/Instructions.html' class Subsession(BaseSubsession): pass class Group(BaseGroup): assigned_team = models.IntegerField() def set_guess_payoffs(self): players = self.get_players() p1 = self.get_player_by_id(1) p2 = self.get_player_by_id(2) if self.assigned_team == 1: for p in players: if p.team_performance == p.participant.vars['guess_team']: p.payoff_guess_team= 2 else: p.payoff_guess_team= 2 elif self.assigned_team == 0 and random.random() < 0.5 : if p1.participant.vars['guess_others'] == p2.rat_total_correct: p1.payoff_guess2 = 2 else: p1.payoff_guess2 = 0 if p2.participant.vars['guess_others'] == p1.rat_total_correct: p2.payoff_guess2 = 2 else: p2.payoff_guess2 = 0 else: for p in players: if p.participant.vars['self_confidence']== p.rat_total_correct: p.payoff_guess1 = 2 else: p.payoff_guess1 = 0 for p in players: p.participant.vars['payoff_guess2'] = p.payoff_guess2 print ("Player:", "payoff_guess2", p.participant.vars['payoff_guess2']) p.participant.vars['payoff_guess1'] = p.payoff_guess1 print ("Player:", "payoff_guess1", p.participant.vars['payoff_guess1']) p.participant.vars['payoff_guess_team'] = p.payoff_guess_team print ("Player:", "payoff_guess_team", p.participant.vars['payoff_guess_team']) def set_payoffs(self): players = self.get_players() for p in players: p.total_correct = p.rat_total_correct print("Player:", p.id_in_group, " total number of correct answers is", p.total_correct) if p.participant.vars['assigned_team'] == 1: self.assigned_team = 1 else: self.assigned_team = 0 if self.assigned_team == 1: print("Player:", p.id_in_group, " works in a team") for p in players: p.team_performance = sum([p.total_correct for p in players])*1/2 print(p.team_performance, "Team performance") p.payoff_rat3 = p.team_performance * Constants.payment_per_question else: print("Player:", p.id_in_group, " works individually ") for p in players: p.payoff_rat3 = p.total_correct * Constants.payment_per_question for p in players: p.participant.vars['payoff_rat_team'] = p.payoff_rat3 print("Player:", p.id_in_group, " payoff rat_team:", p.participant.vars['payoff_rat_team']) class Player(BasePlayer): rat_total_correct = models.IntegerField( initial=0, doc="total number of correct answers" ) rat_total_correct0 = models.IntegerField( initial=0, doc="total number of correct answers" ) total_correct = models.IntegerField() team_performance = models.FloatField() payoff_guess1 = models.FloatField(initial=0) payoff_guess2 = models.FloatField(initial=0) payoff_rat3 = models.FloatField() payoff_guess_team = models.FloatField(initial=0) consent = models.BooleanField() zoom = models.BooleanField() zoom_end = models.BooleanField() assignment_end = models.BooleanField() assignment0 = models.BooleanField() assignment1 = models.BooleanField() q1 = models.StringField(label="Talih/Düğüm/Kütük") q2 = models.StringField(label="Puf/Sigara/Talaş") q3 = models.StringField(label="Deniz/Çoban/Kutup") q4 = models.StringField(label="Gece/Deve/Guguk") q5 = models.StringField(label="Tırnak/İsim/Kirpik") q6 = models.StringField(label="Parça/Subay/Oyuncu") q7 = models.StringField(label="Kenar/İşlem/Mevsim") q8 = models.StringField(label="Kaba/Çevik/Öncü") q9 = models.StringField(label="Giyim/Çorba/Cevap") q10 = models.StringField(label="Güven/Halk/Kamu") q11 = models.StringField(label="Cadde/Fikir/Kraliçe") q12 = models.StringField(label="Yabancı/Küçük/Tatlı") q13 = models.StringField(label="Destek/Tazminat/Evlat") q14 = models.StringField(label="Atık/Ham/Saydam") q15 = models.StringField(label="Türkçe/Kafa/Şehir") q16 = models.StringField(label="Akar/Duru/Kaynar") q17 = models.StringField(label="Santral/Enerji/Silah") q18 = models.StringField(label="Sargı/Toz/Sofra") q19 = models.StringField(label="Eş/Katma/Saygı") q20 = models.StringField(label="Komşu/Dal/Hakem") 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_performances(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_correct = 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_correct) 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)