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

forward digit span test

*disclaimer
636656

forward digit span test


ChangeLog

  • 2023-11-08 10桁以上にも対応

プログラム

; DST10c
; forward digit span test
; copyleft 2022-06-09 sugiura@nagoya-u.jp
; 2022-06-10
; 2023-11-08
/*

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

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

結果は、日時のついたテキストファイルに保存される。

2023-11-08 10桁以上にも対応。同じ数字が続けて表示されてもわかるように修正。
*/

notesel kiroku

*hajime
	cls
	randomize						; これで「ほんとうに」ランダムに
	mes "copyleft 2023-11-08 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
*/
	randomize; 10c
	repeat kazu					; 指定した桁数の数を表示
		cls
		pos 300, 200
		font "MS ゴシック", 32 
		rkazu = rnd(10)			; 10c
		mes "__"				; 連続して同じ数字が出てもわかるように(10c)
		wait 10					; 0.1秒ごとに(10c)
		pos 300, 200
		mes rkazu				; 10c
		;mes R(cnt)				; 0〜9のランダムになった数字をkazu個分だけ順に表示
		;seikai = seikai + R(cnt) ; 文字列を順に記録
		seikai = seikai + rkazu ; 10c
		wait 100				; 1秒ごとに
		pos 300, 200
		mes "__"				; 10c
		wait 10					; 0.1秒ごとに(10c)
	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
										; フィードバック英語でも(10c)
		font "MS ゴシック", 32 
		pos 150, 200

		if kazu==4{						; 最低限の場合の例外処理(10bで追加)
			mes "あなたの記憶容量は4桁以下です。\n Less than 4 digits"
		} else {
			mes "" + kazu + " 桁があなたの記憶容量です。\n Your memory size"
		}
		
		noteadd "" + kazu

; ファイル名に日時を付ける (10c)
	nen =gettime(0)
	tuki=gettime(1)
	niti=gettime(3)
	ji  =gettime(4)
	fun =gettime(5)

	nengetujifun = "YMDTHM" + nen + "-" + tuki + "-" + niti + "T" + ji + "_" + fun	

	noteadd nengetujifun

	notesave nengetujifun + ".txt"

		wait 300
	
	end