from otree.api import * import random # dog for emotional support doc = """ |\_/| | @ @ Woof! | <> _ | _/\------____ ((| |)) | `--' | ____|_ ___| |___.' /_/_____/____/_______| """ class C(BaseConstants): NAME_IN_URL = 'lottery' # experiment needs two person groups PLAYERS_PER_GROUP = 2 NUM_ROUNDS = 1 # make a budget so can change it later if we have to class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): endowment = models.IntegerField() luck = models.FloatField() # PAGES class Welcome(Page): pass class Welcome_SectionII(Page): @staticmethod def is_displayed(player: Player): return player.id_in_group == player.id_in_group @staticmethod def app_after_this_page(player: Player, upcoming_apps): player.luck = random.random() class Instruction(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): return player.id_in_group == player.id_in_group @staticmethod def app_after_this_page(player: Player, upcoming_apps): player.luck = random.random() class LUCK(Page): form_model = "group" # only show this to the first participant in the group @staticmethod def is_displayed(player: Player): return player.id_in_group == player.id_in_group @staticmethod def app_after_this_page(player: Player, upcoming_apps): group = player.group p1 = group.get_player_by_id(1) p2 = group.get_player_by_id(2) if p1.luck <= p2.luck: p1.endowment = 8 p2.endowment = 2 else: p1.endowment = 2 p2.endowment = 8 player.participant.endowment = player.endowment #class Result_LUCK class MyWaitPage(WaitPage): pass class Result_LUCK(Page): pass page_sequence = [Welcome_SectionII, MyWaitPage, LUCK, MyWaitPage, Result_LUCK]