import itertools import time from datetime import datetime import schedule from otree.api import * c = Currency doc = """ Your app description """ # Store the following variables in an extra dictionary to see the visualization time_started = 0 time_list = [0] time_inc_action = [''] time_ent_action = [''] time_inc_payoff = [0] time_ent_payoff = [0] time_flag = [0] time_ent_invest_until_in = [60] job_idx = itertools.count() jobs = [] class Constants(BaseConstants): name_in_url = 'chainstore_live2.1' # instructions_template = 'livepages/Introduction.html' players_per_group = 2 num_rounds = 1 # Zeitangaben Spiel len_total = 5*60 len_phase_1 = 3*60 time_investment = 60 # Payout Phase 1 Incumbent tolerates payout_entrant_invest_tolerate_1 = -5 payout_entrant_ninvest_tolerate_1 = 0 payout_incumbent_invest_tolerate_1 = 3 payout_incumbent_ninvest_tolerate_1 = 3 # Payout Phase 1 Incumbent fights payout_entrant_invest_fight_1 = -9 payout_entrant_ninvest_fight_1 = 0 payout_incumbent_invest_fight_1 = 1 payout_incumbent_ninvest_fight_1 = 2 # Payout Phase 2 payout_incumbent_invest_2 = 2 payout_incumbent_n_invest_2 = 3 payout_entrant_invest_2 = 2 payout_entrant_n_invest_2 = 0 class Subsession(BaseSubsession): pass # Variables for the whole group # Those variables are transferred into Excel by default class Group(BaseGroup): pass class Player(BasePlayer): game_rep1ent = models.IntegerField(label="Frage 1: Wer erhält Informationen über wessen Spielverhalten?", choices=[ [1, 'Ich erhalte Informationen über das bisherige Spielverhalten des Monopolisten.'], [2, 'Der Monopolist erhält Informationen über mein bisheriges Spielverhalten.'], ], widget=widgets.RadioSelect ) game_rep2ent = models.IntegerField(label="Frage 2: Welchen Nutzen haben die Informationen für Sie?", choices=[ [1, 'Die Informationen sind für mich nicht relevant. Sie haben keinen Nutzen für mich.'], [2, 'Ich kann die Informationen nutzen, um Annahmen über das zukünftige Spielverhalten des Monopolisten zu treffen und dementsprechend meine Strategiewahl anzupassen.'], ], widget=widgets.RadioSelect ) game_rep1inc = models.IntegerField(label="Frage 1: Wer erhält Informationen über wessen Spielverhalten?", choices=[ [1, 'Der Entrant erhält Informationen über mein bisheriges Spielverhalten.'], [2, 'Ich erhalte Informationen über das bisherige Spielverhalten des Entrants.'], ], widget=widgets.RadioSelect ) game_rep2inc = models.IntegerField(label="Frage 2: Welchen Nutzen haben die Informationen für den Entrant?", choices=[ [1, 'Die Informationen sind für den Entrant nicht relevant. Sie haben keinen Nutzen für ihn.'], [2, 'Der Entrant nutzt die Informationen, um Annahmen über mein zukünftiges Spielverhalten zu treffen und dementsprechend seine Strategiewahl anpassen.'], ], widget=widgets.RadioSelect ) #Richtige Antwort Incumbent und Entrant right_answers = models.IntegerField(initial=0) class InstructionsRep1(Page): def vars_for_template(player: Player): return dict( GameNumber=player.session.GameNumber ) class Kontrollfragenent(Page): @staticmethod def is_displayed(player): return player.id_in_group == 1 form_model = 'player' form_fields = ['game_rep1ent', 'game_rep2ent'] def vars_for_template(player: Player): return dict( GameNumber=player.session.GameNumber ) class Kontrollfrageninc(Page): @staticmethod def is_displayed(player): return player.id_in_group == 2 form_model = 'player' form_fields = ['game_rep1inc', 'game_rep2inc'] def vars_for_template(player: Player): return dict( GameNumber=player.session.GameNumber ) class Kontrollantwortenent(Page): @staticmethod def is_displayed(player): return player.id_in_group == 1 def vars_for_template(player: Player): if player.game_rep1ent == 1: player.right_answers = player.right_answers + 1 if player.game_rep2ent == 2: player.right_answers = player.right_answers + 1 return dict( game_rep1=player.game_rep1ent, game_rep2=player.game_rep2ent, ) class Kontrollantworteninc(Page): def is_displayed(player): return player.id_in_group == 2 @staticmethod def vars_for_template(player: Player): if player.game_rep1inc == 1: player.right_answers = player.right_answers + 1 if player.game_rep2inc == 2: player.right_answers = player.right_answers + 2 return dict( game_rep1=player.game_rep1inc, game_rep2=player.game_rep2inc, ) class Kontrollantworten_WaitPage(WaitPage): wait_for_all_groups = True page_sequence = [ InstructionsRep1, Kontrollfragenent, Kontrollfrageninc, Kontrollantwortenent, Kontrollantworteninc, Kontrollantworten_WaitPage, ]