from otree.api import * import random doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'KarinQ' PLAYERS_PER_GROUP = None TASKS = ["A","B","C","D","E","F"] NUM_ROUNDS = len(TASKS) class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): def Kaihi(): return models.IntegerField( choices=[0,1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18,19,20, 21,22,23,24,25,26,27,28,29,30, 31,32,33,34,35,36,37,38,39,40, 41,42,43,44,45,46,47,48,49,50, 51,52,53,54,55,56,57,58,59,60, 61,62,63,64,65,66,67,68,69,70, 71,72,73,74,75,76,77,78,79,80, 81,82,83,84,85,86,87,88,89,90, 91,92,93,94,95,96,97,98,99,100], widget=widgets.RadioSelect ) def Rakkan(label): return models.IntegerField( choices=[[0,'全く当てはまらない'],[1,'あまり当てはまらない'],[2,'少し当てはまる'],[3,'よく当てはまる']], label=label, widget=widgets.RadioSelect ) age =models.IntegerField(label='あなたの年齢をお選びください', choices=[[18,'18'],[19,'19'],[20,'20'],[21,'21'],[22,'22'],[23,'23'],[24,'24'],[25,'25'],[26,'26'],[27,'27'],[28,'28'],[29,'29'], [30,'30'],[31,'31'],[32,'32'],[33,'33'],[34,'34'],[35,'35'],[36,'36'],[37,'37'],[38,'38'],[39,'39'], [40,'40'],[41,'41'],[42,'42'],[43,'43'],[44,'44'],[45,'45'],[46,'46'],[47,'47'],[48,'48'],[49,'49'], [50,'50'],[51,'51'],[52,'52'],[53,'53'],[54,'54'],[55,'55'],[56,'56'],[57,'57'],[58,'58'],[59,'59'], [60,'60'],[61,'61'],[62,'62'],[63,'63'],[64,'64'],[65,'65'],[66,'66'],[67,'67'],[68,'68'],[69,'69'], [70,'70'],[71,'71'],[72,'72'],[73,'73'],[74,'74'],[75,'75'],[76,'76'],[77,'77'],[78,'78'],[79,'79'], [80,'80'],[81,'81'],[82,'82'],[83,'83'],[84,'84'],[85,'85'],[86,'86'],[87,'87'],[88,'88'],[89,'89'], [90,'90'],[91,'91'],[92,'92'],[93,'93'],[94,'94'],[95,'95'],[96,'96'],[97,'97'],[98,'98'],[99,'99']] ) department =models.IntegerField(label='あなたの学科をお選びください', choices=[[0,"日本文学科"],[1,"書道学科"],[2,"英語英米文学科"], [3,"児童教育学科"],[4,"現代心理学科"],[5,"ビジネス心理学科"], [6,"現代ビジネス学科"],[7,"国際観光ビジネス学科"],[8,"公共経営学科"], [9,"生活デザイン学科"],[10,"管理栄養学科"],[11,"造形デザイン学科"], [12,"薬学科"],[13,"看護学科"],[14,"保育科"]] ) sex=models.StringField(label='あなたの性別をお選びください', choices=[[0,'女性'],[1,'男性'],[2,'その他']] ) KQ1 = Kaihi() KQ2 = Kaihi() KQ3 = Kaihi() KQ4 = Kaihi() KQ5 = Kaihi() KQ6 = Kaihi() RQ1 = Rakkan('困ったときふさぎ込まないで次の手を考える。') RQ2 = Rakkan('困ったことが起きても良い方向にもっていく。') RQ3 = Rakkan('困ったとき考えるだけ考えたらもう悩まない。') RQ4 = Rakkan('なにごとも良い方向にもっていく。') RQ5 = Rakkan('悪い結果にならないと楽観的に考える') RQ6 = Rakkan('良い結果になると考える') RQ7 = Rakkan('楽しいことを考える') RQ8 = Rakkan('どんな状況でも、たいてい私はうまく切り抜けられる') RQ9 = Rakkan('私はたやすくリラックスできる') RQ10 = Rakkan('私はいつも物事を良い方向に解釈する') RQ11 = Rakkan('私はいつも自分の将来を明るく考えている') RQ12 = Rakkan('私は友達とうまく行っている') RQ13 = Rakkan('私は今まで、物事が自分の思い通りになるなんて考えたことがない') RQ14 = Rakkan('物事が思い通りに運んだためしがない') RQ15 = Rakkan('わたしはどんな困難にも解決の糸口があると信じている') def creating_session(subsession:Subsession): if subsession.round_number == 1: for p in subsession.get_players(): round_numbers=list(range(1,C.NUM_ROUNDS+1)) random.shuffle(round_numbers) p.participant.vars['task_rounds']=dict(zip(C.TASKS,round_numbers)) # PAGES class MyPage1(Page): form_model='player' form_fields=['KQ1'] @staticmethod def is_displayed(player): return player.round_number == player.participant.vars['task_rounds']['A'] class MyPage2(Page): form_model='player' form_fields=['KQ2'] @staticmethod def is_displayed(player): return player.round_number == player.participant.vars['task_rounds']['B'] class MyPage3(Page): form_model='player' form_fields=['KQ3'] @staticmethod def is_displayed(player): return player.round_number == player.participant.vars['task_rounds']['C'] class MyPage4(Page): form_model='player' form_fields=['KQ4'] @staticmethod def is_displayed(player): return player.round_number == player.participant.vars['task_rounds']['D'] class MyPage5(Page): form_model='player' form_fields=['KQ5'] @staticmethod def is_displayed(player): return player.round_number == player.participant.vars['task_rounds']['E'] class MyPage6(Page): form_model='player' form_fields=['KQ6'] @staticmethod def is_displayed(player): return player.round_number == player.participant.vars['task_rounds']['F'] class Intro(Page): pass @staticmethod def is_displayed(player): return player.round_number == 1 class Results(Page): form_model='player' form_fields=['RQ1','RQ2','RQ3','RQ4','RQ5','RQ6','RQ7','RQ8','RQ9','RQ10','RQ11','RQ12','RQ13','RQ14','RQ15'] @staticmethod def is_displayed(player): return player.round_number == 6 class Demographic(Page): form_model='player' form_fields=['age','sex'] @staticmethod def is_displayed(player): return player.round_number == 6 class End(Page): @staticmethod def is_displayed(player): return player.round_number == 6 page_sequence = [Intro, MyPage1,MyPage2,MyPage3,MyPage4,MyPage5,MyPage6, Results, Demographic, End]