15 一个小练习

今天不打算讲新东西,我们利用前面学过的内容,写一个简单的程序。

做实验的时候,经常都会在程序的某个阶段,呈现一个注视点,在这个界面上要求被试按任意键继续实验。

今天这个程序就是要实现这个功能,在屏幕上呈现一个注视点,然后,被试按任意键,就继续,我们这里是退出程序。

显然,今天这个练习只需要在上次的程序中添加一段代码,这段代码的功能是画一个圆点出来。

之前,我们说过大多数在屏幕上显示内容的功能都在 Screen 函数中,我们先看看 Screen 函数中有没有这个功能。在 Matlab 命令行中输入 Screen , 它会列出 Screen 函数的功能。好像没有这个功能,但是我看到了它有 FillOval的功能,好像跟圆有点关系。

继续看看这东西干嘛的,在命令行中输入 Screen FillOval?, 不仅给出了这个函数的具体用法了,还介绍了这个函数的功能。这里不再详细解释,大家自己仔细看看,然后多试试就能明白了。反正,它就是画一个椭圆(将 rect 定义成正方形,它就画出来圆了),并且用颜色填满它。

现在,思路已经有了,可以动手写程序了:

% 关闭该关闭的,清空该清空的
sca; 
close all;
clearvars; 

% 载入默认设置
PsychDefaultSetup ( 2 );

% 设定需要操作的屏幕
screen = max ( Screen ( 'Screens' ) );
% 请注意这一句的写法,我偷懒了,用一个函数的结果传入另一个函数得到了结果。其实并不好,可读性不强。

% 定义几个常用颜色
white = WhiteIndex ( screen );
black = BlackIndex ( screen );
grey = white / 2;

% 打开一个窗口:在screen屏幕中,打开一个白色窗口,全屏
[ win, rect ] = PsychImaging ( 'OpenWindow',  screen, white );

% 在这个窗口的正中央画一个圆,圆的直径是40个像素点,并且用灰色填满。
% 前面留过一个问题,对于一个指定大小的矩形,如果要将它放在屏幕正中央,如何计算它的位置坐标?
% 例如,我的屏幕是 2560 像素宽,1440 像素高,现在这个圆形的直径是40个像素点,这个矩形的坐标是什么?
% 下面,我直接给出了答案,请结合这个答案,一定要算一算,搞明白这个原理。
% 当然,我们有函数直接获取这个值,程序的健壮性上,比咱们在这里直接输入坐标点要好得多,这块的内容以后再介绍。
% 请注意每个人的屏幕分辨率不一样,这里的坐标也不同;
% 分辨率不同,尺寸不同,所以,即便同样像素值,但显示 出来的大小也是不同的;
% 请根据自己的屏幕分辨率,确定一个合适的大小,自己算一个坐标。
Screen( 'FillOval', win, grey, [ 1260, 700, 1300, 740] );

% Flip 这个 back buffer
Screen ('Flip', win );

% 等待被试按任意键
KbStrokeWait;

% 关闭窗口
sca;

你可能感兴趣的:(15 一个小练习)