概要
反応時間を計測するサンプルコードです。
緑色の円が表示されたらキーボードのキーをどれでもいいので押して下さい(zキーとか)。
押されたキーのキー番号と、円が出てからキーが押されるまでの時間(RT)が画面左上に表示されます。
実行例
注意:ブラウザが IE だとブラウザ上のデモ画面が表示されない可能性が高いです。なるべく新しいバージョンの Chrome や Firefox をお使いください。
プログラムコード
int state = 0;
int baseTime;
int response;
int RT;
void setup(){
size( 800, 600 );
frameRate( 60 );
noStroke();
state = 0;
baseTime = millis();
response = 0;
RT = 0;
textFont( createFont( "Georgia", 28 ) );
}
void draw(){
background( 0 );
if( state == 0 ){
blankPhase();
} else if( state == 1 ){
responsePhase();
}
drawInfo();
}
void blankPhase(){
int elapsedTime = millis() - baseTime;
if( elapsedTime > 2000 ){
state = 1;
baseTime = millis();
}
}
void responsePhase(){
fill( color(100, 255, 200) );
ellipse( width/2, height/2, height * 0.2, height * 0.2 );
}
void drawInfo(){
fill( 255 );
text( "key: " + response, 30, 40 );
text( "RT: " + RT, 30, 80 );
String t = (state==0) ? "Elapsed: 0000"
: "Elapsed: " + nf(millis() - baseTime, 4);
text( t, 30, 120 );
}
void keyPressed(){
if( state == 1 ){
response = int(keyCode);
RT = millis() - baseTime;
baseTime = millis();
state = 0;
}
}
解説
あとで書きます。
コメント