*disclaimer
648302
語彙判断課題
lex-min.hsp(669)
;----------------------BEGIN------------------------------- ;lexical decision task; copyleft 2011-02-25 sugiura@nagoya-u.jp ;---------------------------------------------------------- ; ★呈示する刺激データの記述:以下のフォーマットで必要な数だけ記入 S(0)="大学" ; 0番の刺激は、大学 V(0)="T" ; 正しいので、T S(1)="学甲" ; 1番の刺激は、学甲 V(1)="F" ; 誤りなので、F S(2)="林檎" ; 2番の刺激は、林檎 V(2)="T" ; 正しいので、T S(3)="美柑" ; 3番の以下同様に必要なだけ追加 V(3)="F" ;; これ以降が処理部分 ;; 全体的な環境設定-------------------------------------------- #include "winmm.as" ; マルチメディアタイマーの使用 #include "kernel32.as" ; Sleepを含むライブラリーの使用 timeBeginPeriod 1 ; マルチメディアタイマーの分解能を1ミリ秒に設定 screen 0,640,480,0 ; 呈示画面の大きさの設定 yoko = 300: tate = 200 ;刺激を呈示する座標の設定(画面中央あたり) log = "" ; 変数名を空に(初期化) notesel log ; ログをメモリーノートパッドにとる mondaisuu = length(S) ;呈示する刺激の数(配列の要素数) seitousuu = 0 ; 正答数を空に(初期化) ; 呈示データの呈示順序のランダム化---------------------------------- randomize ; 乱数を不規則化 repeat mondaisuu ; 問題数の数だけ繰り返す x = rnd(cnt+1) ; cntは0から始まるので1を足して乱数の発生をはじめる R(cnt) = R(x) ; 乱数番目の配列の数を繰り返し回数番目の数に代入 R(x)=cnt+1 ; 繰り返しの回数+1を乱数番目の配列に入れる loop ; 課題の指示文の呈示------------------------------------------------ pos 50,150 ; 画面上、左上隅から右50、下150に表示 font "MS ゴシック", 32, 16 mes " 漢字熟語 判断テスト \n\n" font "MS 明朝",16 mes " + が表示された後、漢字熟語が表示されます。\n\n" mes "正しい熟語の場合は、マウスの 左ボタン" mes "非熟語の場合は、 マウスの 右ボタン を押してください。\n\n" mes "反応時間を計るので、出来るだけ速く押してください。\n\n" pos 280, 400 button "Start", *ready ; Startというボタンを押したら、*ready を実行 stop ; ボタンが押されるまで待つ *ready cls ; 指示文を消す mouse -1 ; マウスカーソルを非表示に ; メインルーチン(プログラムの主要部)-------------------------------------- i=0 *mon01 j = R(i) -1 ; ランダムが1からなので0に変更 gosub *matu ; 刺激提示まで少し待つ pos yoko,tate ; 提示位置を設定 font "MS 明朝", 48, 16 ; フォント名 大きさ スタイル(1は太字) mes S(j) ; 刺激の提示 gosub *RTs ; 反応時間の計測開始 osu="" ; 何が押されたかの変数を空に repeat ; 反応を待つ stick res ; 入力されたキー情報の取得 if res&256 { osu="T" ; 256はマウスの左ボタン gosub *RTe ; 計測を停止し break ; loopからぬける } if res&512 { osu="F" ; 512はマウスの右ボタン gosub *RTe ; 計測を停止し break ; loopからぬける } Sleep 1 ; マルチメディアタイマーでのスリープ loop if V(j) == osu { ; 真偽値が判断とあっている場合 seitousuu += 1 ; 正答数に1を加える noteadd S(j)+"\t"+V(j)+"\t○\t"+jikan ; ログに追加記録 } else { ; 真偽値と判断が違っている場合 noteadd S(j)+"\t"+V(j)+"\t×\t"+jikan ; ログに追加記録 } cls ; 画面をクリアー i=i+1 ; カウンターに数を加える if i<mondaisuu : goto *mon01 ; 問題数の上限まで繰り返す ; プログラムの終了とデータの保存------------------------------- *owari mouse ; マウスカーソルを表示(元に戻す) pos 150,50: font "MS 明朝",24 mes "これで終わりです。\n\n番号・回答・正誤・ミリ秒" seitouritu = double(seitousuu) seitousuu = double(seitousuu) mondaisuu = double(mondaisuu) seitouritu = (seitousuu/mondaisuu)*100 seitouritu = strf("%3.2f",seitouritu) noteadd "正答率: "+seitouritu+" %" mes log ; 記録の表示(確認のため)★実際の実験ではコメントアウトする timeGetTime itu = str(stat) + ".txt" mes "保存ファイル名は"+itu notesave itu ; ファイルに保存 button "End", *owari2 stop *owari2 timeEndPeriod 1 ;マルチメディアタイマーの使用停止 end ; プログラムの終了 ; サブルーチン(繰返し行う処理)は最後に書く------------------- *matu ; 凝視点の表示 font "MS 明朝", 48, 1 ; フォント名 大きさ スタイル(1は太字) pos yoko+30,tate+3 ; 凝視点をすこし右下にずらし漢字の真中にくるように mes "+" wait 100 ; 10ms 単位で停止 100 x 10ms = 1000ms cls wait 50 return ; サブルーチンは return でとじる *RTs ; リアクションタイム計測開始 hajime = 0 ; まず変数を空に timeGetTime ; PCが起動してからの時間をミリ秒でとる hajime = stat ; 上記のミリ秒がシステム変数statに入る return *RTe ; リアクションタイム計測終了 kokomade = 0 ; 変数を空に jikan = 0 timeGetTime kokomade = stat jikan = kokomade - hajime ; 引き算をしてかかった時間を計算 return ;--------------------END--------------------------------------------
https://sugiura-ken.org/wiki/