from otree.api import Currency as c, currency_range from . import pages from ._builtin import Bot from .models import Constants from random import randint import pandas as pd # ********************************************************************************************************************** # *** BOT # ********************************************************************************************************************** payment_data = pd.read_csv("mpl_private_mzp_2/bonus_payment_data_private.csv", delimiter=",") payment = payment_data.to_dict(orient="records") class PlayerBot(Bot): def play_round(self): yield(pages.general_study_Instructions, dict(P_ID = payment_data['P_ID'].sample(1).item())) # define page as round_number page = self.subsession.round_number # get bot's switching point switching_point = self.player.participant.vars['mpl_switching_point'] # ------------------------------------------------------------------------------------------------------------ # # make decisions # ------------------------------------------------------------------------------------------------------------ # indices = [list(t) for t in zip(*self.player.participant.vars['mpl_choices'])][0] form_fields = [list(t) for t in zip(*self.player.participant.vars['mpl_choices'])][1] if Constants.one_choice_per_page: if indices[page - 1] <= switching_point: yield (pages.Decision, { form_fields[page - 1]: 'A' }) else: yield (pages.Decision, { form_fields[page - 1]: 'B' }) else: decisions = [] for i in indices: if i <= switching_point: decisions.append('A') else: decisions.append('B') choices = zip(form_fields, decisions) yield (pages.Decision, { i: j for i, j in choices }) if self.player.option_to_pay == "A": yield(pages.Results_A) yield(pages.dictator_game, dict(kept_dg_bdm_private = randint(0,10))) yield(pages.Results) else: yield(pages.Results_B) yield (pages.bonus_payment_info) yield(pages.study_end, dict(feedback = "cool feedback!", university=bool(1))) # ------------------------------------------------------------------------------------------------------------ # # submit results page # ------------------------------------------------------------------------------------------------------------ # #if Constants.results: # if Constants.one_choice_per_page: # if page == Constants.num_choices: # yield (pages.Results) # else: # yield (pages.Results)