#1 by macrotl (edited )
I have a game with several rounds where participants have to predict the value of a variable. In the first round they read a constant and submit their guess. In the following round, I want to show them the average of all the guesses from all players in the first round, before they make their guess for round 2. I managed to calculate the average as a group variable, but cannot pass that information on a page where the form_filed is player. I also managed to pass the guess variable between rounds if stored in a participant variable but do not know how to calculate the average if stored in this way. Ideally, I would need to do this over several rounds. Thanks a lot for your help! class C(BaseConstants): NAME_IN_URL = 'take_one' PLAYERS_PER_GROUP = 2 NUM_ROUNDS = 2 START_VALUE = float(2.0) class Subsession(BaseSubsession): pass class Group(BaseGroup): average = models.FloatField() class Player(BasePlayer): your_guess = models.FloatField( min=float(-100), max=float(100), label="What is your prediction for tomorrow?" ) earning = models.FloatField() average = models.FloatField() # FUNCTIONS def set_payoffs(group: Group): players = group.get_players() group.average = sum([p.your_guess for p in players]) / 2 for p in players: p.earning = round(100 / (1 + abs(p.your_guess - group.average)), 2) p.payoff = p.earning * 0.005 # PAGES class Prediction_start(Page): form_model = 'player' form_fields = ['your_guess'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 @staticmethod def before_next_page(player: Player, timeout_happened): player.participant.vars['your_guess'] = player.your_guess class Prediction_next(Page): form_model = 'player' form_fields = ['your_guess'] @staticmethod def is_displayed(player: Player): return player.round_number > 1 @staticmethod def vars_for_template(player: Player): player.your_guess = player.participant.vars['your_guess'] class Wait(WaitPage): after_all_players_arrive = set_payoffs class Results(Page): pass page_sequence = [Prediction_start, Prediction_next, Wait, Results]
#2 by Newbie
Hello, I will start working on a similar problem shortly and wanted to ask if you managed to complete your task or if you are still facing any problems.