- ① スクラッチで順次処理を学ぼう!ネコを左右に動かすアニメーションの作り方【初心者向け】
- ② スクラッチでネコが正方形に動くアニメーションの作り方|座標と向きの使い方
- ③ スクラッチでネコが左右にスケートするアニメーションの作り方|繰り返しの使い方
- ④ スクラッチでネコが走るアニメーションの作り方|コスチューム切り替えの使い方
- ⑤ スクラッチでネコがランダムな速さで走るアニメーションの作り方|乱数の使い方
- ⑥ スクラッチでロケットを矢印キーで動かす作り方|条件分岐の使い方
- ⑦ スクラッチで重力ゲームの作り方|もし〜なら・でなければブロック入門
- ⑧ スクラッチでスプライト同士がメッセージを送り合う作り方|みんなであいさつ (いまここ)
さぁ、スクラッチでナニ作る!?
魔法使いから弟子1、弟子1から弟子2・弟子3へとメッセージが枝分かれしていく構造が効いている。2つのメッセージ名を使い分けることで、全員一斉ではなく順番通りに連鎖させるタイミング制御を、条件分岐なしで実現している。1対1リレーと1対多ファンアウトを組み合わせたこの設計が、メッセージ機能の使いどころを端的に示している。どう組み立てているか、作り方を見ていこう。 参考資料:スクラッチプログラミング事例大全集
動画で見てみよう
チュートリアルの元になった作品
今回の目標
- ウィザードが挨拶してメッセージを送る
- 弟子1がメッセージを受け取って返事し、次のメッセージを送る
- 弟子2と弟子3が同時にメッセージを受け取って挨拶する
スターター作品をリミックスしよう
このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
スターター作品をダウンロード
#1ウィザードの配置
準備
スプライト「ウィザード」を開く
| スプライトについて |
|---|
| 画面右側に立つ魔法使い。ゲーム開始時に「こんばんは」と挨拶し、弟子たちへ呼びかけのメッセージを送る |
| どんな役割か |
| ウィザードが画面右に現れて「こんばんは」って言うとこを作るよ。言い終わったら弟子を呼ぶメッセージを送る流れまで一緒に組もう! |
実装
まずはウィザードの初期設定から。 が押されたときのあとに回転方法を「左右のみ」にして向きを-90度(左向き)にし、座標(160, -40)に配置するよ。回転方法を「左右のみ」にしておくと、左を向いたときにキャラがひっくり返らないんだ。
向きを-90度にすると左向きになるのがポイント。Scratchでは90度が右、-90度が左、0度が上を向く仕組みだよ。
#2あいさつとメッセージ送信
準備
メッセージ「魔法使いの呼びかけ」を追加
ウィザードが弟子たちに呼びかけるときに送るメッセージ
実装
ウィザードの位置が決まったら、次はあいさつの動作を足そう。( ) と ( ) 秒言うで「こんばんは。」と1秒間言って、そのあと( ) を送るで「魔法使いの呼びかけ」メッセージを送る流れだよ。
この( ) を送るが今回のカギになるブロック。メッセージを送ると、そのメッセージを待っている全スプライトが一斉に動き出す。テレビの放送みたいなもので、1つの局が発信したら受信機を持ってる人全員に届く仕組みなんだ。
#3弟子1の配置
準備
スプライト「弟子1」を開く
| スプライトについて |
|---|
| 画面左側に立つ弟子。魔法使いの呼びかけを受けて「こんばんは」と返事し、他の弟子へ返答メッセージを送る |
| どんな役割か |
| 弟子1が魔法使いに呼ばれたら「こんばんは」って返事するとこを作るよ。返事が終わったら他の弟子にも知らせるメッセージを送る流れも組んでいこう! |
実装
が押されたときで旗がクリックされたら、座標(-170, -50)に配置する。画面の左側に立たせるだけのシンプルなコードだね。
#4弟子1の返事
準備
メッセージ「弟子の返答」を追加
弟子1が返事を終えた後、他の弟子たちへ知らせるために送るメッセージ
実装
弟子1がウィザードからのメッセージを受け取って返事をするコードを作るよ。( ) を受け取ったときで「魔法使いの呼びかけ」を受け取ったら、「こんばんは。」と1秒言ったあと、( ) を送るで今度は「弟子の返答」という別のメッセージを送るんだ。
つまりメッセージのリレーが起きる仕組みだよ。ウィザード→弟子1→次の弟子たちへ、とバトンが渡っていくイメージだね。
#5弟子2の配置
準備
スプライト「弟子2」を開く
| スプライトについて |
|---|
| 画面中央下に立つ弟子。弟子1の返答メッセージを受け取って「こんばんは」と挨拶する |
| どんな役割か |
| 弟子2が弟子1からのメッセージを受け取って「こんばんは」って挨拶するとこを作るよ。メッセージを受け取ってセリフを言う流れをサクッと作ろう! |
実装
弟子1と同じパターンで、 が押されたときのあと座標(-30, -130)に配置するよ。画面の中央下あたりに立つ位置だね。
#6弟子2のあいさつ
弟子2は弟子1が送った「弟子の返答」メッセージを受け取って動くよ。( ) を受け取ったときで「弟子の返答」を受け取ったら、「こんばんは。」と1秒間言う。
弟子1のときと違って、弟子2は次にメッセージを送る必要がないんだ。あいさつを受けて返事をする、それだけのシンプルな役割だよ。
#7弟子3の配置
準備
スプライト「弟子3」を開く
| スプライトについて |
|---|
| 画面左上に立つ弟子。弟子1の返答メッセージを受け取って「こんばんは」と挨拶する |
| どんな役割か |
| 弟子3も弟子1からのメッセージを受け取って「こんばんは」って挨拶するよ。弟子2と同じ仕組みだから、パターンをつかんで一気に作ろう! |
実装
が押されたときのあと座標(-80, 110)に移動させる。こっちは画面の左上あたり。4体のキャラクターがそれぞれ違う位置に散らばるレイアウトになっているんだ。
#8弟子3のあいさつ
最後に弟子3もあいさつするコードを作ろう。弟子2とまったく同じ仕組みで、( ) を受け取ったときで「弟子の返答」を受け取ったら「こんばんは。」と1秒間言うコードだよ。
ここで面白いのが、弟子2と弟子3は同じ「弟子の返答」メッセージを受け取って同時にあいさつするってこと。1つのメッセージで複数のスプライトが一斉に反応できる、これがメッセージの便利なところ。次回は「みんな集合」で、スプライト同士の連携をさらに深めていこう!
まとめ
今回はメッセージを使ってスプライト同士を連携させる仕組みを学んだよ。「送る」と「受け取ったとき」を組み合わせるだけで、こんなにきれいなリレーができるんだ。メッセージ名を変えることで順番をコントロールできるのが今回の最大のポイント。次回は「みんな集合」でさらに面白い連携を作っていこう!