import random from statistics import mean from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, ) author = 'Ankit Shanker' doc = """ """ class Constants(BaseConstants): name_in_url = 'Practice' players_per_group = None num_rounds = 1 max_points = c(100) class Subsession(BaseSubsession): pass # average_norm = models.IntegerField() # individual_payoff = models.CurrencyField() # # def reward(self, round_number): # if round_number in [1, 7]: # players = self.get_players() # act4_responses = [p.participant.vars['response4'][0] for p in players] # self.average_norm = int(mean(act4_responses)) # # for p in players: # difference = p.participant.vars['response2'] - self.average_norm # draw = random.uniform(-2, 2) # # if difference < draw: # self.individual_payoff = Constants.max_points # else: # self.individual_payoff = 0 # # p.participant.vars['payoff'] = self.individual_payoff # # return self.individual_payoff # else: # return 0 class Group(BaseGroup): pass class Player(BasePlayer): pass # def payoff(self): # players = self.group.get_players() # act1_responses = [p.participant.vars['response3']for p in players] # # # Filter out tuples and convert to integers # act3_responses = [int(response) for response in act1_responses if isinstance(response, int)] # # if not act3_responses: # # Handle the case when there are no valid responses # return {'payoffs': []} # # average_norm = sum(act3_responses) / len(act3_responses) # # payoffs = [] # # for player in players: # response = player.participant.vars['response3'] # # if isinstance(response, int): # difference = abs(response - average_norm) # draw = random.uniform(-2, 2) # # if difference < draw: # payoff = 100 # else: # payoff = 0 # # payoffs.append(payoff) # else: # # Handle the case when a response is not an integer # payoffs.append(0) # # return {'payoffs': payoffs}