HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0704
n単純反応速度5解決


n

リンク

2018/7/4(Wed) 13:01:28|NO.84717

単純反応速度のプログラムで
灰色の背景に赤い丸を1000ms〜3000msの間隔でランダムに25回提示し、
赤い丸が出てキーを押すまでの反応速度時間を計りたいのですが
どのようにコマンドを書けばいいですか?
コマンドの説明もしてもらえればありがたいです。



この記事に返信する


ソラ

リンク

2018/7/4(Wed) 17:27:37|NO.84718


#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
こんな感じでしょうか。



さか

リンク

2018/7/4(Wed) 20:09:54|NO.84719

自分もちょっと作ってみました。
フライングも入れてみました。


randomize #const r 30 ; 半径 onkey goto *key *main flg = 0 color 0,0,0: boxf color 255,0,0: pos ginfo_winx/2,ginfo_winy/2-100: mes "READY!": wait 300 mes "GO!": wait 0 await rnd( 2000 )+1000 color 255,0,0: circle ginfo_winx/2-r,ginfo_winy/2-r,ginfo_winx/2+r,ginfo_winy/2+r flg = 1 tm_1 = int( gettime( 6 ) )*1000 + int( gettime( 7 ) ) stop *key if flg = 0: dialog "フライング!": goto *main tm_2 = int( gettime( 6 ) )*1000 + int( gettime( 7 ) ) dialog ""+ ( tm_2 - tm_1) color 0,0,0: boxf goto *main



n

リンク

2018/7/5(Thu) 11:22:24|NO.84721

教えてくださってありがとうございます!
書き込みを忘れていたのですが
赤い丸の提示時間は100msにしたくてISIの時間を2000ms±1000msにしたかったのですが
それだとコマンドも少し変わってしまいますか?
あと、前に反応速度のプログラムで
timebeginperiod timegettime timeendperiod
を使用したことがあったのですが今回では必要ないですか?
良ければ教えて下さい。



ソラ

リンク

2018/7/5(Thu) 18:52:23|NO.84724

私が書いたプログラムはd3timer()を使用していますが、これはtimegettimeそのものです。
F1で出てくるHDL(HSP Document Library)に詳しい説明が書いているのでそちらをご覧ください。

>>ISIの時間を2000ms±1000ms
ISIとはなんでしょうか。
赤い丸を表示する間隔のことですか?それならその通りに出来ているはずです。
とりあえずプログラムの意味を理解する所から始めてみてはどうでしょうか?
それができれば赤い丸の表示時間を変えるというのも割と簡単にできると思います。



n

リンク

2018/7/5(Thu) 22:18:04|NO.84726

なるほど!
d3timer()というものは聞いたことがなくわかりませんでした。
ありがとうございます。勉強になりました。
コマンドの説明もしてもらいこれからの勉強にいかしたいと思います。
丁寧にありがとうございました!



ONION software Copyright 1997-2023(c) All rights reserved.