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

forward digit span test

*disclaimer
305928

forward digit span test


プログラム

; DST10b
; forward digit span test
; copyleft 2022-06-09 sugiura@nagoya-u.jp
; 2022-06-10
/*

数字一文字一秒
4桁から順に増やして確認
数字列提示後、キー入力

2回続けてできたら、一つ増やす
2回続けて間違えたら終わり

結果は、digit.txtに保存される。

*/

notesel kiroku

*hajime
	cls
	randomize		; これで「ほんとうに」ランダムに
	mes "copyleft 2022-06-10 sugiura@nagoya-u.jp"
	
	pos 100, 50
	font "MS ゴシック", 32 
	mes "Digit Span Test"
	mes ""

keta=4				; 4から1ずつ増やす。

	kazu=keta
	correctcheck=0		; 合っていた数の記録
	incorrect=0		; 2回間違えたらアウトの記録

	pos 100, 200
	mes "数字を何桁記憶できるでしょうか?"
	mes "How many digits can you remember?"
	mes ""
	pos 300, 300
	button goto "OK", *kakunin

stop
	
*kakunin

	cls

	pos 300, 300
	button goto "Start", *shuffle
	stop

*shuffle

	cls
	
	seikai = ""			; 文字列配列初期化
	
	pos 250, 200
	mes "数字を順に覚えてね"
	mes "Remember the numbers"

	pos 580, 420			; 右下の方に止めるボタン
	;button goto "Quit", *owari 
	wait 200

	; 0から9の数字をシャッフルしRという配列に順に並べる
	repeat 10

		x = rnd(cnt+1)		; rndは、0から()内の数字の前までの間で整数の乱数発生。()内の数字は含まれない
		R(cnt) = R(x)		; 
		R(x) = cnt		; 
		await 1
	loop
	
	repeat kazu			; 指定した桁数の数を表示
		cls
		pos 300, 200
		font "MS ゴシック", 32 
		mes R(cnt)		; 0〜9のランダムになった数字をkazu個分だけ順に表示
		seikai = seikai + R(cnt) ; 文字列を順に記録
		wait 100		; 1秒ごとに
	loop

	wait 10
	goto  *kaitou
	
*kaitou
	cls
	
	kotae=""
	pos 250, 200
	font "MS ゴシック", 32
	mes "回答欄 (Type in)"
	objmode 2			; 回答欄内の文字の大きさ変更
	input kotae, 200, 34
	objmode 0
	mes ""
	button "check", *check

	objsel 0		; input欄内にキャレット表示(10bで追加)

	repeat				; ボタンでなくEnterキーで次へ
		stick enter
		if enter==32 : goto *check
	await 1
	loop
	
	stop

*check
	cls
	
	if kotae == seikai{	; 合っていたら
		font "MS ゴシック", 32 
		pos 250, 200
		mes "Correct!"
		correctcheck= correctcheck + 1
		;mes correctcheck
		wait 200

		if correctcheck > 1 {	; 2回目合ったら次へ
			kazu = kazu + 1	; 桁数を増やす
			correctcheck=0	; チェックの初期化
			incorrect=0	; 間違えた方も初期化(10bで追加)
		}
		goto *shuffle
	}
	
	; あってなかったら
		pos 250, 200
		mes "Wrong ..."
		incorrectcheck = incorrectcheck + 1

		if incorrectcheck==2 {
			mes ""
			mes "This is the end."
			wait 150

			if kazu != keta{
				kazu = kazu - 1
			}
			
			goto *owari
		}
			
		wait 200
		
		goto *shuffle

*owari
	cls

		font "MS ゴシック", 32 
		pos 150, 200

		if kazu==4{						; 最低限の場合の例外処理(10bで追加)
			mes "あなたの記憶容量は4桁以下です。"
		} else {
			mes "" + kazu + " 桁があなたの記憶容量です。"
		}
		
		noteadd "" + kazu + "桁があなたの記憶容量です。"
		notesave "digit.txt"

		wait 300
	
	end