from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random import time author = 'E. Fukuda' doc = """ Word Encryption with Double Randomization """ class Constants(BaseConstants): name_in_url = 'word_encryption' players_per_group = None num_rounds = 100 # じゅうぶん大きければ任意 letter = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ] t = 7 # 制限時間(分) instructions_WEDR = 'word_encryption/EncryptionInstructions.html' class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): # 問題 player変数からvars_for_template内限定変数にできるかもしれないが今はこのまま # prob1 = models.StringField() # prob2 = models.StringField() # prob3 = models.StringField() # 回答欄(被験者が入力) ans1 = models.IntegerField(min=100, max=999) ans2 = models.IntegerField(min=100, max=999) ans3 = models.IntegerField(min=100, max=999) # 正解 corr_ans1 = models.IntegerField(min=100, max=999) corr_ans2 = models.IntegerField(min=100, max=999) corr_ans3 = models.IntegerField(min=100, max=999) total_payoff = models.CurrencyField() # def set_problem(self): # self.prob1 = Constants.letter[ random.randint( 0, len(Constants.letter)-1 ) ] # self.prob2 = Constants.letter[ random.randint( 0, len(Constants.letter)-1 ) ] # self.prob3 = Constants.letter[ random.randint( 0, len(Constants.letter)-1 ) ] def score_calc(self): if self.corr_ans1 == self.ans1: self.payoff += 1 if self.corr_ans2 == self.ans2: self.payoff += 1 if self.corr_ans3 == self.ans3: self.payoff += 1 self.total_payoff = round(sum( [self.in_round(i).payoff for i in range(1, self.round_number+1)] ), 0) self.participant.vars['score'] = int(self.total_payoff)