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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0911
はる画面提示からボタンが押されるまでの時間計測について2解決


はる

リンク

2013/9/11(Wed) 16:06:50|NO.57082

心理学の実験で時間計測を必要とするプログラムを作成しています。
timeGettimeで画面が提示されてから次へボタン(button"次へ")が押されるまでの時間を
ミリ秒単位で計測しようと考えています。

指定されたキーが押されるまでの時間計測方法は理解できたのですが、*hata1などに移動する際の時間計測方法がわからず困っています。

初めてプログラミングをする初心者のため、質問内容が分かりにくいかもしれません。
上手な方法がありましたらご教授ください。よろしくお願い致します。



この記事に返信する


暇人

リンク

2013/9/11(Wed) 19:57:35|NO.57083

垂直同期を取らない限り画像表示命令から
実際にモニター画面に表示されるまで最大16ms程度(リフレッシュレート60Hzの場合)の遅延がある
さらにOSや設定、ディスプレイによって50msぐらい遅延することもありえる

後、timeGettimeの精度は環境により違うので自分で設定する必要がある

ミリ秒の差で評価が変る物を本気で作るなら
これらの事を考慮する必要がある

これらの事は、100ms程度の差で評価の違いを出すとか
画像AよりBの方が遅いとかの相対的な評価なら
それ程気にしなくて良いかも知れない


>指定されたキーが押されるまでの時間計測方法は理解できたのですが
逆に、これが理解できるのに
>*hata1などに移動する際の時間計測方法がわからず困っています。
これが、分からないのが理解できない・・・

buttonは離されてからジャンプするので
ボタン画像を表示した範囲でクリックされたらジャンプにしてる

#uselib "winmm.dll" #cfunc timeGetTime "timeGetTime" celload dir_exe+"\\sample\\game\\mapbg.bmp",1 celdiv 1,64,64,32,32 color 100,100,100 boxf 0,0,50,40 color 200,200,200 boxf 1,1,49,19 boxf 1,21,49,39 color pos 7,2 mes "開始" mes "次へ" repeat await 1 stick stk if (stk&256)>0 { if mousex<50 { if mousey<40 { if mousey<20 {gosub *start}else{gosub *cel_next} } } } loop stop *start celid=0 title "スタート" gosub *draw return *cel_next timB=timeGetTime() title ""+(timB-timA)+"ms" celid=(celid+1)\8 gosub *draw return *draw redraw 0 pos 320,240 celput 1,celid,6,6 redraw 1//ここで画面更新を実行してるがモニターに表示されるのは何時か分からない timA=timeGetTime() return



はる

リンク

2013/9/13(Fri) 20:11:36|NO.57121

ありがとうございます!

>指定されたキーが押されるまでの時間計測方法は理解できたのですが
逆に、これが理解できるのに
>*hata1などに移動する際の時間計測方法がわからず困っています。
これが、分からないのが理解できない・・・

正しく理解してなかったようです。すみません。
作っていただいたプログラムを勉強したら、理解できました!

厳密に正確な時間計測は必要ないとのことなのでtimegettimeで作ろうと思います。
ありがとうございます。



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