*disclaimer
1198323
語彙判断課題
lex-min.hsp(811)
;----------------------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/