トップ 履歴 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

lexicalDecision

*disclaimer
648302

HSP
ExpbyHSP

語彙判断課題

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--------------------------------------------