#include "d3m.hsp"
randomize;乱数発生の初期化
回数=5
最低=1000;次に表示されるまでの最低時間
最大=3000;次に表示されるまでの最大時間
円の半径=10;px
dim タイミング_リスト,回数;配列変数を作成
dim 反応速度_リスト,回数
repeat 回数
タイミング_リスト(cnt)=rnd(最大-最低)+最低;乱数を発生
loop
測定開始時間=d3timer();Windows が起動してからの経過時間を ms (ミリ秒, 1/1000 秒) 単位で返します。
ct=0
;カラー設定、矩形を塗りつぶす
Color 127,127,127:boxf;灰色の背景
repeat
getkey キー入力,32;キー入力チェック。Spaceを押してるかどうかを検出
;タイミング_リストに記録された時間経過したら赤丸を表示する。
if (d3timer()-測定開始時間)>タイミング_リスト(ct){
redraw 0;再描画の設定
Color 127,127,127:boxf;灰色の背景
Color 255,0,0
posx=ginfo_winx/2;真ん中の座標を計算
posy=ginfo_winy/2
circle posx-円の半径,posy-円の半径,posx+円の半径,posy+円の半径;円を描画する
redraw 1;再描画の設定
}
if キー入力=1 & キー入力_bac=0 {;押し下げた瞬間
反応速度_リスト(ct)=d3timer()-(測定開始時間+タイミング_リスト(ct));反応までの時間を計算
測定開始時間=d3timer();次のためにリセット。
ct+1
if ct=回数:break;もし設定した回数に達していたらループを抜ける。
Color 127,127,127:boxf;灰色の背景
}
キー入力_bac=キー入力;1フレーム前の情報を次のフレームで使うため保存しておく。
await 1;一定の時間で待つ
loop
;結果を表示
Color 255,255,255:boxf
Color 0,0,0
repeat 回数
pos 10,10+(cnt*20):mes ""+(cnt+1)+"回目:"+反応速度_リスト(cnt)+""
loop
こんな感じでしょうか。