4.2 場合分け(2)- 各場合に実行する命令が複数の時

M先生
これまで車は一直線に走っていたけれど,次は道の端で折り返すときに車線を変更するようにしてみよう.
Sくん
車の動きを図にするとこんな感じですね.こうすれば車が2台になっても正面衝突しなくなりますね.

M先生
よし,じゃプログラムを組み立てていこうか.
Tさん
スクリプトを新しく作る必要はありますか?
M先生
そうだね.「車線を変更しながら道路を往復する」というスクリプトを作ろう.次に作りたい命令を日本語で説明してみようか.
Tさん
「車が道路の端に来たかどうか調べて,道路の端に来たなら車線を変更して反転させる,それ以外のときは車を進ませる」を繰り返せばOKですね.
M先生
さっき作った命令と違うのはどこかな?
Tさん
「車線を変更して反転させる」という部分です.
Sくん
反転してから車線を変更してもいいですよね?
M先生
そうだね.ただ,反転してから車線を変更するとプログラムがややこしくなるはずだよ.
Sくん
えっ?なんでだー???
M先生
じゃあS君は反転してから車線を変更するという方法でやってみなさい.
Tさん
先生,私はできました.それぞれの場合に実行する命令を入れる部分には,複数の命令を入れることができるんですね.
M先生
そうだね.複数の命令があれば上から順番に実行されるんだ.

Sくん
うーん.できないよー.

「考えてみよう!」

S君が選んだ,「反転させてから車線を変更する」方法ではなぜプログラムがややこしくなるのでしょうか.理由を考えてみましょう.



「やってみよう!」

車をコピーし,複数の車を道路に走らせてみましょう.

オブジェクトをコピーすると,スクリプトも一緒にコピーされます. コピー元のオブジェクトのスクリプトを実行したままコピーするとどうなるかも試してみましょう. コピーしたオブジェクトのスクリプトを削除してもコピー元のオブジェクトのスクリプトには変化がないことを確認しましょう.

「ヒント」

複数のオブジェクトのスクリプトを一度に実行する場合は,部品フラップにある「全スクリプト」ツールが役に立ちます. 節[全スクリプト] に使い方の解説があります.



「考えてみよう!」

例題として作った以下のスクリプトをよく見てください.進める命令タイルが2つ入っていますね. 四角で囲んだ2つのドット数(100ドットと10ドット)にはどんな意味があるでしょうか. 道は縦幅より横幅の方が長いはずです.縦方向に走る時のドット数(100ドット)の方が,横を走るときのドット数(10ドット)より大きいのはなぜでしょうか.