from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Instruction(Page): # timeout_seconds = 480 #ページの時間制限 def is_displayed(self): #ラウンド一回目の時だけ表示 return self.subsession.round_number == 1 class ResultsWaitPage(WaitPage): pass class Game_1(Page): timeout_seconds =180 #ページの時間制限 live_method = 'live_auction' #models.pyにあるlive_auctionという関数を呼び出す def vars_for_template(self): if self.subsession.round_number == 1: self.player.money = self.player.in_round(self.subsession.round_number ).money self.player.num_stocks= self.player.in_round(self.subsession.round_number ).num_stocks #ラウンド2以降では前のラウンドのお金と株式を引き継ぐように設定.これをしないとデータが引き継がれない if self.subsession.round_number > 1: self.player.money = self.player.in_round(self.subsession.round_number - 1).money self.player.num_stocks = self.player.in_round(self.subsession.round_number - 1).num_stocks def before_next_page(self): print(Constants.price_box) if len(Constants.price_box) == 0: self.group.average_of_traded_price = None else: self.group.average_of_traded_price = float(sum([d for d in Constants.price_box.values()]))/len(Constants.price_box) print(self.group.average_of_traded_price) if not(self.group.traded_or_not): Constants.price_box.clear() class Game_2(Page): timeout_seconds = 20 #ページの時間制限 def before_next_page(self): self.player.dividend = self.group.dividend_per_stock*self.player.num_stocks #配当金の計算 self.player.money += self.player.dividend #配当金を加算した所持金 #def before_next_page(self): #次のページに行く前の処理 # coin_arr = random.randint(0,1) # for i in coin_arr: # self.group.dividend_per_stock = 250 * i # self.player.dividend = self.group.dividend_per_stock*self.player.num_stocks #配当金の計算 # self.player.money += self.player.dividend #配当金を加算した所持金 class Game_3(Page): timeout_seconds = 30 class Waitpage(WaitPage): def after_all_players_arrive(self): #全ての被験者が着くのを待つ pass class Results(Page): def is_displayed(self): #実験が終わったことを知らせるページもラウンドのみ表示 return self.subsession.round_number == Constants.num_rounds def js_vars(self): lank_list = {} for p in self.group.get_players(): lank_list[p.id_in_group] = p.money print(lank_list) return dict(lank_list=lank_list) page_sequence = [Instruction,Waitpage, Game_1, Game_2, Game_3, Results]