*disclaimer
1198778
forward digit span test
ChangeLog
- 2023-11-08 10桁以上にも対応
プログラム
- 実行ファイル DigitSpanTest10c.exe(239)
- ソースコード DST10c.hsp(255)
; 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
https://sugiura-ken.org/wiki/