以下のプログラムは、最も基本となるプログラムです。内容をよく理解して、実験プログラムを作る際の参考にしてください。
このプログラムでは、画面の中央に円を1つ呈示します。いずれかのキーを押すと、その情報をコマンドウィンドウに表示します。ESCキーを押すとプログラムを終了します。
注意)PTB 3.0.10よりWindows版のOctaveはサポートしなくなったようです。
function ovalkeyListenChar(2); % キー入力がmatlabをジャマしないように。AssertOpenGL; % OpenGLが使えるかどうかのチェック。KbName('UnifyKeyNames'); % OSで共通のキー配置にする。% プログラムが動かない場合はmyKeyCheckを使ってみてください。%myKeyCheck;% あらかじめ読み込んでおく必要がある関数たちGetSecs;WaitSecs(0.1);rand('state', sum(100*clock));% 背景色bgColor = [128 128 128];% 円の色ovalColor = [255 0 0];% 円の半径radius = 20;try % 必要に応じてカーソルを消してください %HideCursor; screenNumber = max(Screen('Screens')); % ウィンドウでの呈示(デバッグ用) %[windowPtr, windowRect] = Screen('OpenWindow', screenNumber, bgColor, [100, 200, 700, 600]); % フルスクリーンでの呈示 [windowPtr, windowRect] = Screen('OpenWindow', screenNumber, bgColor); % 画面の中央の座標 [centerX centerY] = RectCenter(windowRect); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 円の描画 Screen('FillOval', windowPtr, ovalColor, [centerX - radius, centerY - radius, centerX + radius, centerY + radius]); Screen('Flip', windowPtr); % 画面に呈示 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ESCキーを押すまでは円を呈示したまま % ESCキー以外を押すと、押されたキーの情報をコマンドウィンドウに表示します。 escapeKey = KbName('ESCAPE'); while KbCheck; end % いずれのキーも押されていないことをチェック。 while 1 [ keyIsDown, seconds, keyCode ] = KbCheck; if keyIsDown % キー情報はコマンドウィンドウに表示されます。 fprintf('キー情報: %i %s \n', find(keyCode), KbName(keyCode)); if keyCode(escapeKey) break; % while 文を抜けます。 end; % いずれのキーも押されていないことをチェック。 while KbCheck; end; end; end %終了処理 Screen('CloseAll'); ShowCursor; ListenChar(0); catch % 正常に終了した場合は、catch以下は実行されません。 Screen('CloseAll'); ShowCursor; ListenChar(0); psychrethrow(psychlasterror);end
"myKeyCheck" を呼び出している。プログラムが正しく動作しないときに試してみてください。
注意点として、tryからcatchの間でエラーが生じなければ、catchからendの間に書かれていることはしない。
%Screen('Preference', 'SkipSyncTests', 1);