「hello.sce」には何が書かれていたのかを理解する
テスト環境 Windows 10, Presentation Version 21.1 Build 09.05.19
2020.01.131-1、1-2で作成および保存した「hello.sce」は、
内容をもう一度見てみます。
begin;
trial {
picture {
text {
caption = "Hello World!";
font_size = 48;
};
x = 0; y = 0;
};
time = 0;
duration = 1000;
code = "hello";
};
※ シナリオファイルの書き方にはいくつかのお約束があります。命令の効力が及ぶ範囲を指定するには中括弧(curly brackets { } )を使い、命令を区切るときはセミコロン( ; )を使います。半角スペースや改行、タブ文字はプログラム上無視されるので、読みやすさを重視した書き方が可能です。裏を返せば一度も改行を使わずに書くこともできますが、無謀の極みです。
このコードは、入れ籠構造を含む4つのパートに分解することができます。
begin;
trial { ... };
3. picture { ... };
4. text { ... };
1.の「begin;」は、ここから命令文が始まることを示す定型文です。次回解説しますが、これよりも前に書いたコードはヘッダ(header)として扱われます。
2. の「trial { ... };」の中には3.があり、さらにその中に4.が入っている入れ籠構造になっています。最も内側にあるパートである4. から読み解くと、「text { ... };」は読んで字のごとく文字列に関するパートになっています。この中には、「caption = "Hello World";」と「font_size = 48;」という2つのコードが並べられています。そろそろお察しのことかと思いますが、「caption = " ";」のダブルクオーテーションで囲まれた文字列を、48ポイントの大きさで表示させなさい、という意味になっています。
3. の「picture { ... };」は、表示画面全体を管理しています。ここに書かれている内容は、先ほどの4. で定義した文字列を、「x = 0;」と「y = 0;」に配置しなさい、という意味を持っています。Presentationの座標系はxが水平軸(左側が負・右側が正)・yが垂直軸(下側が負・上側が正)で、画面の中心が原点になっています。文字列の位置合わせ時の基準点は、文字列がちょうど収まるサイズの枠に対しての中央になるので、「Hello World!」は画面のど真ん中に配置されるわけです。
2. の「trial { ... };」は各種刺激をとりまとめ、時間情報を与えています。ここでは、3. の「picture { ... };」で定義した1枚の画面を、開始0ミリ秒から(time = 0;)1000ミリ秒間(duration = 1000;)表示させなさい、という意味になっています。「code = "hello";」は、1-2で登場したログファイルに、文字列表示に関する記録を「hello」という名前をつけて残しておきなさい、ということを意味します。
もちろんプログラムで実行できる内容はもっと多彩で、「変えてもいい部分」が存在します。例えば文字列の表示位置を左上に200ピクセルずつずらしてみましょう。8行目です。
x = -200; y = 200;
上記のように書き換えたら、1-1でEditorウィンドウからシナリオを実行した時と同じく、緑色右矢印の「Run Scenario」アイコン、もしくは「F5」キーを押して実行してみましょう。この方法だとシナリオファイルを保存しなくてもとりあえず実行してみることが可能です。先程文字列が呈示された位置よりも左上に文字列が出現していることでしょう。
次に、呈示時間を操作してみましょう。11行目の「duration =」に続く数値は画面の提示期間をミリ秒単位で示しているので、これを「100」に書き換えてみます。
duration = 100;
同様に、この状態のシナリオを実行してみましょう。
textパート
シナリオファイルに文法上の誤りがあると、実行できません。
「F7」キーを押すと、エラーチェックが行われます。「No errors」になっていれば問題ありませんが、エラーメッセージが出てきたときは、そこに示された行数と内容を手がかりに、間違っている箇所を直していきます。