import itertools import time from datetime import datetime import schedule from otree.api import * c = Currency doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'questions_Continuous' # 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): # Necessary variables for Questions for Entrant payoff_E = models.IntegerField(min=None, label="Sie wählen die Strategie 'Investieren'. Der Monopolist wählt die Strategie" " 'Investment Erschweren'. Wie hoch ist Ihre Auszahlung pro Sekunde?") length_E1 = models.IntegerField(label="Wie lange müssen Sie die Strategie 'Investieren' in Sekunden wählen, um " "einen vollständigen Kapazitätsaufbau zu realisieren? (Antwort in Sekunden)") #Fragen für erste Position strategy_E = models.IntegerField( label="Sie haben für die ersten 150 Sekunden die Strategie 'Nicht Investieren' gewählt. Können Sie den Markteintritt noch realisieren?", choices=[ [1, 'Ja'], [2, 'Nein'], ] ) # Necessary variables for Questions for Entrant payoff_I = models.IntegerField(min=None, label="Der Entrant hat die Strategie 'Investieren' gewählt. Sie wählen die Strategie" " 'Investment Erschweren'. Wie hoch ist Ihre Auszahlung pro Sekunde?") length_I1 = models.IntegerField(label="Wie lange muss der Entrant die Strategie 'Investieren' wählen, um " "einen vollständigen Kapazitätsaufbau zu realisieren? (Antwort in Sekunden)") #Fragen für erste Position strategy_I = models.IntegerField( label="Der Entrant hat für die ersten 150 Sekunden die Strategie 'Nicht Investieren' gewählt. Kann der Entrant den Markteintritt noch realisieren?", choices=[ [1, 'Ja'], [2, 'Nein'], ] ) #Richtige Antwort Incumbent und Entrant right_answers = models.IntegerField(initial=0) class Introduction(Page): def vars_for_template(player: Player): return dict( GameNumber=player.session.GameNumber + 1 ) class Questions_E(Page): @staticmethod def is_displayed(player): return player.id_in_group == 1 form_model = 'player' form_fields = ['payoff_E', 'length_E1', 'strategy_E'] def vars_for_template(player: Player): return dict( GameNumber=player.session.GameNumber + 1 ) class Questions_I(Page): @staticmethod def is_displayed(player): return player.id_in_group == 2 form_model = 'player' form_fields = ['payoff_I', 'length_I1', 'strategy_I'] def vars_for_template(player: Player): return dict( GameNumber=player.session.GameNumber + 1 ) class Results_E(Page): @staticmethod def is_displayed(player): return player.id_in_group == 1 @staticmethod def vars_for_template(player: Player): if player.payoff_E == -9: player.right_answers = player.right_answers + 1 if player.length_E1 == 60: player.right_answers = player.right_answers + 1 if player.strategy_E == 2: player.right_answers = player.right_answers + 1 return dict( payoff_E=player.payoff_E, length_E1=player.length_E1, strategy_E=trafo(player.strategy_E), GameNumber=player.session.GameNumber + 1 ) class Results_I(Page): @staticmethod def is_displayed(player): return player.id_in_group == 2 @staticmethod def vars_for_template(player: Player): if player.payoff_I == 1: player.right_answers = player.right_answers + 1 if player.length_I1 == 60: player.right_answers = player.right_answers + 1 if player.strategy_I == 2: player.right_answers = player.right_answers + 1 return dict( payoff_I=player.payoff_I, length_I1=player.length_I1, strategy_I=trafo(player.strategy_I), GameNumber=player.session.GameNumber + 1 ) def trafo(variable): if variable == 1: return "Ja" else: return "Nein" def get_GameNumber(subsession: Subsession): session = subsession.session return session.GameNumber def set_GameNumber(subsession: Subsession): session = subsession.session session.GameNumber = session.GameNumber + 1 print(session.vars) class Ending(Page): def vars_for_template(player: Player): return dict( GameNumber=player.session.GameNumber + 1 ) class Ending_WaitPage(WaitPage): wait_for_all_groups = True after_all_players_arrive = set_GameNumber page_sequence = [ Introduction, Questions_E, Questions_I, Results_I, Results_E, Ending, Ending_WaitPage ]