まずは、復習もかねて簡単な動きを作ろう。

なんでもいいので猫ちゃんの他にスプライトを2つ配置しよう。

[Ghost1]

配置したスプライトに適当に動きをつけよう。まずはGhost1から

「旗がクリックされたとき」の下に「ずっと」をおいてその中に「1度回す」をおく。

実行されると、「ずっと」の繰り返し処理に基づき、ずっと回転し続ける。

[Ghost2]

もう一つのスプライトにも処理をつけよう。

これも実にイージー。旗がクリックされたら上下の移動を繰り返す処理だ。

実行してみるとGhost1は回転し、Ghost2は上下の移動を繰り返す。

このようにScratchではそのスプライトのスクリプトに書いてあることを順次実行していく

続いて猫ちゃんにもスクリプトをつけよう

[猫ちゃん]

これも実にイージー、猫ちゃんがクリックされたときに「準備はいいかい?」と1秒表示するものだ。

ここまでの処理で実行してみると三人のキャラクターは自分の持っているスクリプトに基づいて黙々と仕事をしている。

さて、ここでこの猫ちゃんの「準備はいいかい?」という問いかけに対して、二人のGhostに返事をさせるにはどうすれば良いだろうか?

[メッセージ]

こういった時にはメッセージを利用するとよい。拡声器を用いてゲームに存在する全てのスクリプトにメッセージを伝えるイメージだ。

言葉だけだと難しいのでさっそくやってみよう。

[イベント]にある「メッセージ1を送る」を配置しよう。

これで、猫ちゃんをクリックすると「準備はいいかい?」と言った後にゲーム全体に対して[メッセージ1]というメッセージを発信する。拡声器で[メッセージ1]が発生しましたよ〜という感じだ。

[メッセージを受け取る]

こうして発信されたメッセージはゲームに存在しているすべてのスクリプトは受け取ることができる。さっそくやってみよう。

まずはくるくる回っているGhost1にメッセージを受け取れるようにしよう。

[イベント]にある「メッセージ1を受け取ったとき」を配置する。これで拡声器で発信されたメッセージを受け取ることができる。

OK!と表示しよう。

同様に上下移動しているGhostにも処理をいれよう。

これで実行してみよう。猫ちゃんをクリックすると二人のゴーストが返事をする。

このようにメッセージを使うとスクリプトを超えて処理を連携できる。

[まとめ]

メッセージを使うと特定の瞬間にゲーム全体で処理を走らせることができる。

敵にやられたときに「ゲームオーバーメッセージ」を発信して、存在するスプライトがそれぞれ処理を行う。

など、このメッセージを使う局面はとても多い。Scratchでゲームを作る際にとても重要な機能だ。

[今回の完成版]

[今回のプロジェクト]
https://scratch.mit.edu/projects/166377293/