以下のプログラムは、最も基本となるプログラムです。内容をよく理解して、実験プログラムを作る際の参考にしてください。
このプログラムでは、画面の中央に円を1つ呈示します。いずれかのキーを押すと、その情報をコマンドウィンドウに表示します。ESCキーを押すとプログラムを終了します。
注意)PTB 3.0.10よりWindows版のOctaveはサポートしなくなったようです。
function ovalkey
ListenChar(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);