反応時間の取得

概要

反応時間を計測するサンプルコードです。
緑色の円が表示されたらキーボードのキーをどれでもいいので押して下さい(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;
  }
}

解説

あとで書きます。

コメント