from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random author = 'Siyu' doc = """ redistribution """ class Constants(BaseConstants): name_in_url = 'c_redistribution70_CH' players_per_group = 2 num_rounds = 1 timer_text = "Remaining Time:" table1_answer = 39 table2_answer = 29 table3_answer = 26 table4_answer = 30 table5_answer = 32 table6_answer = 43 table7_answer = 26 table8_answer = 37 table9_answer = 32 table10_answer = 40 table11_answer = 47 table12_answer = 33 table13_answer = 31 table14_answer = 39 table15_answer = 44 table16_answer = 35 table17_answer = 39 table18_answer = 35 table19_answer = 34 table20_answer = 38 table21_answer = 28 table22_answer = 33 table23_answer = 39 table24_answer = 26 table25_answer = 37 table26_answer = 48 table27_answer = 35 table28_answer = 45 table29_answer = 34 table30_answer = 41 table31_answer = 37 table32_answer = 48 table33_answer = 43 table34_answer = 35 table35_answer = 40 table36_answer = 34 table37_answer = 36 table38_answer = 38 table39_answer = 36 table40_answer = 34 table41_answer = 39 table42_answer = 40 table43_answer = 40 table44_answer = 37 table45_answer = 30 class Subsession(BaseSubsession): def creating_session(self): self.group_randomly(fixed_id_in_group=True) import random class Group(BaseGroup): Dice_C = models.IntegerField() Dice_tie = models.IntegerField() Dice_Dictator = models.IntegerField() save_to_p1 = models.IntegerField() save_to_p2 = models.IntegerField() def random_numbers(self): self.Dice_C = random.randint(1,10) self.Dice_tie = random.randint(1,10) self.Dice_Dictator = random.randint(1,2) print('Dice C is', self.Dice_C) print('Dice tie break is', self.Dice_tie) print('Dictator is', self.Dice_Dictator) def set_payoffs(self): p1 = self.get_player_by_id(1) p2 = self.get_player_by_id(2) if self.Dice_C <= 7: if p1.correct_number > p2.correct_number or (p1.correct_number==p2.correct_number and self.Dice_tie > 5): p1.high_performer = 1 p2.high_performer = 0 p1.endowment = 100 p2.endowment = 0 else: p1.high_performer = 0 p2.high_performer = 1 p1.endowment = 0 p2.endowment = 100 else: if p1.correct_number > p2.correct_number or (p1.correct_number==p2.correct_number and self.Dice_tie > 5): p1.high_performer = 1 p2.high_performer = 0 p1.endowment = 0 p2.endowment = 100 else: p1.high_performer = 0 p2.high_performer = 1 p1.endowment = 100 p2.endowment = 0 def set_final_payoffs(self): p1 = self.get_player_by_id(1) p2 = self.get_player_by_id(2) if self.Dice_Dictator == 1 and p1.endowment == 100: p1.share_payoff = 100 - p1.share_amount p2.share_payoff = 0 + p1.share_amount elif self.Dice_Dictator == 1 and p1.endowment == 0: p1.share_payoff = 0 + p1.share_amount p2.share_payoff = 100 - p1.share_amount elif self.Dice_Dictator == 2 and p2.endowment == 100: p2.share_payoff = 100 - p2.share_amount p1.share_payoff = 0 + p2.share_amount elif self.Dice_Dictator == 2 and p2.endowment == 0: p2.share_payoff = 0 + p2.share_amount p1.share_payoff = 100 - p2.share_amount if p1.Dice_switching_point2 < p1.switching_point2: if p1.high_performer == 1: p1.guess2_payoff = 100 else: p1.guess2_payoff = 0 else: p1.guess2_payoff = p1.Dice_switching_point2 if p2.Dice_switching_point2 < p2.switching_point2: if p2.high_performer == 1: p2.guess2_payoff = 100 else: p2.guess2_payoff = 0 else: p2.guess2_payoff = p2.Dice_switching_point2 if p1.Dice_game == 2: p1.payoff_chosen = p1.share_payoff elif p1.Dice_game == 3: p1.payoff_chosen = p1.guess2_payoff if p2.Dice_game == 2: p2.payoff_chosen = p2.share_payoff elif p2.Dice_game == 3: p2.payoff_chosen = p2.guess2_payoff if self.Dice_Dictator == 1: p1.Dictator = 1 p2.Dictator = 0 else: p1.Dictator = 0 p2.Dictator = 1 p1.payoff_total = p1.share_payoff + p1.guess2_payoff p2.payoff_total = p2.share_payoff + p2.guess2_payoff p1.participant.vars['game_share'] = p1.share_payoff p2.participant.vars['game_share'] = p2.share_payoff p1.participant.vars['game_guess2'] = p1.guess2_payoff p2.participant.vars['game_guess2'] = p2.guess2_payoff p1.participant.vars['game_chosen'] = p1.payoff_chosen p2.participant.vars['game_chosen'] = p2.payoff_chosen p1.participant.vars['Dice'] = p1.Dice_game p2.participant.vars['Dice'] = p2.Dice_game p1.participant.vars['Dictator'] = p1.Dictator p2.participant.vars['Dictator'] = p2.Dictator p1.participant.vars['Scenario'] = p1.Dice_switching_point2 p2.participant.vars['Scenario'] = p2.Dice_switching_point2 p1.participant.vars['Switch'] = p1.switching_point2 p2.participant.vars['Switch'] = p2.switching_point2 p1.participant.vars['Performer'] = p1.high_performer p2.participant.vars['Performer'] = p2.high_performer class Player(BasePlayer): practice1_entered = models.IntegerField(min=0, max=40) practice2_entered = models.IntegerField(min=0, max=75) table1_entered = models.IntegerField(min=0, max=75, initial=0) table2_entered = models.IntegerField(min=0, max=75, initial=0) table3_entered = models.IntegerField(min=0, max=75, initial=0) table4_entered = models.IntegerField(min=0, max=75, initial=0) table5_entered = models.IntegerField(min=0, max=75, initial=0) table6_entered = models.IntegerField(min=0, max=75, initial=0) table7_entered = models.IntegerField(min=0, max=75, initial=0) table8_entered = models.IntegerField(min=0, max=75, initial=0) table9_entered = models.IntegerField(min=0, max=75, initial=0) table10_entered = models.IntegerField(min=0, max=75, initial=0) table11_entered = models.IntegerField(min=0, max=75, initial=0) table12_entered = models.IntegerField(min=0, max=75, initial=0) table13_entered = models.IntegerField(min=0, max=75, initial=0) table14_entered = models.IntegerField(min=0, max=75, initial=0) table15_entered = models.IntegerField(min=0, max=75, initial=0) table16_entered = models.IntegerField(min=0, max=75, initial=0) table17_entered = models.IntegerField(min=0, max=75, initial=0) table18_entered = models.IntegerField(min=0, max=75, initial=0) table19_entered = models.IntegerField(min=0, max=75, initial=0) table20_entered = models.IntegerField(min=0, max=75, initial=0) table21_entered = models.IntegerField(min=0, max=75, initial=0) table22_entered = models.IntegerField(min=0, max=75, initial=0) table23_entered = models.IntegerField(min=0, max=75, initial=0) table24_entered = models.IntegerField(min=0, max=75, initial=0) table25_entered = models.IntegerField(min=0, max=75, initial=0) table26_entered = models.IntegerField(min=0, max=75, initial=0) table27_entered = models.IntegerField(min=0, max=75, initial=0) table28_entered = models.IntegerField(min=0, max=75, initial=0) table29_entered = models.IntegerField(min=0, max=75, initial=0) table30_entered = models.IntegerField(min=0, max=75, initial=0) table31_entered = models.IntegerField(min=0, max=75, initial=0) table32_entered = models.IntegerField(min=0, max=75, initial=0) table33_entered = models.IntegerField(min=0, max=75, initial=0) table34_entered = models.IntegerField(min=0, max=75, initial=0) table35_entered = models.IntegerField(min=0, max=75, initial=0) table36_entered = models.IntegerField(min=0, max=75, initial=0) table37_entered = models.IntegerField(min=0, max=75, initial=0) table38_entered = models.IntegerField(min=0, max=75, initial=0) table39_entered = models.IntegerField(min=0, max=75, initial=0) table40_entered = models.IntegerField(min=0, max=75, initial=0) table41_entered = models.IntegerField(min=0, max=75, initial=0) table42_entered = models.IntegerField(min=0, max=75, initial=0) table43_entered = models.IntegerField(min=0, max=75, initial=0) table44_entered = models.IntegerField(min=0, max=75, initial=0) table45_entered = models.IntegerField(min=0, max=75, initial=0) Dictator= models.IntegerField() Scenario = models.IntegerField() Switch = models.IntegerField() share_amount = models.IntegerField(min=0, max=100) correct1 = models.IntegerField() correct2 = models.IntegerField() correct3 = models.IntegerField() correct4 = models.IntegerField() correct5 = models.IntegerField() correct6 = models.IntegerField() correct7 = models.IntegerField() correct8 = models.IntegerField() correct9 = models.IntegerField() correct10 = models.IntegerField() correct11 = models.IntegerField() correct12 = models.IntegerField() correct13 = models.IntegerField() correct14 = models.IntegerField() correct15 = models.IntegerField() correct16 = models.IntegerField() correct17 = models.IntegerField() correct18 = models.IntegerField() correct19 = models.IntegerField() correct20 = models.IntegerField() correct21 = models.IntegerField() correct22 = models.IntegerField() correct23 = models.IntegerField() correct24 = models.IntegerField() correct25 = models.IntegerField() correct26 = models.IntegerField() correct27 = models.IntegerField() correct28 = models.IntegerField() correct29 = models.IntegerField() correct30 = models.IntegerField() correct31 = models.IntegerField() correct32 = models.IntegerField() correct33 = models.IntegerField() correct34 = models.IntegerField() correct35 = models.IntegerField() correct36 = models.IntegerField() correct37 = models.IntegerField() correct38 = models.IntegerField() correct39 = models.IntegerField() correct40 = models.IntegerField() correct41 = models.IntegerField() correct42 = models.IntegerField() correct43 = models.IntegerField() correct44 = models.IntegerField() correct45 = models.IntegerField() correct_number = models.IntegerField() Dice_switching_point2 = models.IntegerField() Dice_game = models.IntegerField() switching_point2 = models.IntegerField() share_payoff = models.IntegerField() guess2_payoff = models.IntegerField() payoff_total = models.IntegerField() payoff_chosen = models.IntegerField() high_performer = models.IntegerField() endowment = models.IntegerField() def random_number(self): self.Dice_switching_point2 = random.randint(0, 10) * 10 self.Dice_game = random.randint(2, 3) print('Payment Game is', self.Dice_game) def set_payoff(self): if (self.table1_entered == Constants.table1_answer): self.correct1=1 else: self.correct1=0 if (self.table2_entered == Constants.table2_answer): self.correct2 = 1 else: self.correct2 = 0 if (self.table3_entered == Constants.table3_answer): self.correct3 = 1 else: self.correct3 = 0 if (self.table4_entered == Constants.table4_answer): self.correct4 = 1 else: self.correct4 = 0 if (self.table5_entered == Constants.table5_answer): self.correct5 = 1 else: self.correct5 = 0 if (self.table6_entered == Constants.table6_answer): self.correct6 = 1 else: self.correct6 = 0 if (self.table7_entered == Constants.table7_answer): self.correct7 = 1 else: self.correct7 = 0 if (self.table8_entered == Constants.table8_answer): self.correct8 = 1 else: self.correct8 = 0 if (self.table9_entered == Constants.table9_answer): self.correct9 = 1 else: self.correct9 = 0 if (self.table10_entered == Constants.table10_answer): self.correct10 = 1 else: self.correct10 = 0 if (self.table11_entered == Constants.table11_answer): self.correct11 = 1 else: self.correct11 = 0 if (self.table12_entered == Constants.table12_answer): self.correct12 = 1 else: self.correct12 = 0 if (self.table13_entered == Constants.table13_answer): self.correct13 = 1 else: self.correct13 = 0 if (self.table14_entered == Constants.table14_answer): self.correct14 = 1 else: self.correct14 = 0 if (self.table15_entered == Constants.table15_answer): self.correct15 = 1 else: self.correct15 = 0 if (self.table16_entered == Constants.table16_answer): self.correct16 = 1 else: self.correct16 = 0 if (self.table17_entered == Constants.table17_answer): self.correct17 = 1 else: self.correct17 = 0 if (self.table18_entered == Constants.table18_answer): self.correct18 = 1 else: self.correct18 = 0 if (self.table19_entered == Constants.table19_answer): self.correct19 = 1 else: self.correct19 = 0 if (self.table20_entered == Constants.table20_answer): self.correct20 = 1 else: self.correct20 = 0 if (self.table21_entered == Constants.table21_answer): self.correct21 = 1 else: self.correct21 = 0 if (self.table22_entered == Constants.table22_answer): self.correct22 = 1 else: self.correct22 = 0 if (self.table23_entered == Constants.table23_answer): self.correct23 = 1 else: self.correct23 = 0 if (self.table24_entered == Constants.table24_answer): self.correct24 = 1 else: self.correct24 = 0 if (self.table25_entered == Constants.table25_answer): self.correct25 = 1 else: self.correct25 = 0 if (self.table26_entered == Constants.table26_answer): self.correct26 = 1 else: self.correct26 = 0 if (self.table27_entered == Constants.table27_answer): self.correct27 = 1 else: self.correct27 = 0 if (self.table28_entered == Constants.table28_answer): self.correct28 = 1 else: self.correct28 = 0 if (self.table29_entered == Constants.table29_answer): self.correct29 = 1 else: self.correct29 = 0 if (self.table30_entered == Constants.table30_answer): self.correct30 = 1 else: self.correct30 = 0 if (self.table31_entered == Constants.table31_answer): self.correct31 = 1 else: self.correct31 = 0 if (self.table32_entered == Constants.table32_answer): self.correct32 = 1 else: self.correct32 = 0 if (self.table33_entered == Constants.table33_answer): self.correct33 = 1 else: self.correct33 = 0 if (self.table34_entered == Constants.table34_answer): self.correct34 = 1 else: self.correct34 = 0 if (self.table35_entered == Constants.table35_answer): self.correct35 = 1 else: self.correct35 = 0 if (self.table36_entered == Constants.table36_answer): self.correct36 = 1 else: self.correct36 = 0 if (self.table37_entered == Constants.table37_answer): self.correct37 = 1 else: self.correct37 = 0 if (self.table38_entered == Constants.table38_answer): self.correct38 = 1 else: self.correct38 = 0 if (self.table39_entered == Constants.table39_answer): self.correct39 = 1 else: self.correct39 = 0 if (self.table40_entered == Constants.table40_answer): self.correct40 = 1 else: self.correct40 = 0 if (self.table41_entered == Constants.table41_answer): self.correct41 = 1 else: self.correct41 = 0 if (self.table42_entered == Constants.table42_answer): self.correct42 = 1 else: self.correct42 = 0 if (self.table43_entered == Constants.table43_answer): self.correct43 = 1 else: self.correct43 = 0 if (self.table44_entered == Constants.table44_answer): self.correct44 = 1 else: self.correct44 = 0 if (self.table45_entered == Constants.table45_answer): self.correct45 = 1 else: self.correct45 = 0 self.correct_number = self.correct1+self.correct2+self.correct3+self.correct4+self.correct5+self.correct6+self.correct7+self.correct8+self.correct9+self.correct10+self.correct11+self.correct12+self.correct13+self.correct14+self.correct15+self.correct16+self.correct17+self.correct18+self.correct19+self.correct20+self.correct21+self.correct22+self.correct23+self.correct24+self.correct25+self.correct26+self.correct27+self.correct28+self.correct29+self.correct30+self.correct31+self.correct32+self.correct33+self.correct34+self.correct35+self.correct36+self.correct37+self.correct38+self.correct39+self.correct40+self.correct41+self.correct42+self.correct43+self.correct44+self.correct45