スクラッチ(Scratch)のメッセージは、他のスプライトやステージを動かすための合図を送ることができる便利な機能です。
メッセージを使うことで、より複雑なプログラムを作れます。表現できることがグッと広がりますよ。
今回は、メッセージの使い方を紹介します。
といったことをまとめました。
また、メッセージを使ってかんたんなアニメーションを作ってみました。
スクラッチがはじめての方は、下の記事からごらんください。
メッセージとは他のスプライトやステージを動かすための合図
メッセージとは、他のスプライトやステージを動かすための合図のこと。
メッセージを送ることをきっかけに、メッセージを受け取った複数のスプライトやステージに処理をさせることができます。
いまいちピンとこないかもしれません。
体育の授業を思いうかべてみてください。
先生が「前へならえ!」と言ったら、先頭の人はこしに手をあてて、後ろの人は前の人のかたの位置までうでをあげます。
この場合、先生の「前へならえ!」はメッセージにあたり、生徒たちはメッセージを受け取ったことを合図にそれぞれの立場に合った行動をとります。
人間が何かを合図に行動を起こす場面は他にもたくさんありますね。
スクラッチでも同じように、他のスプライトが処理をするための合図を出せるということです。
メッセージに関するブロック
メッセージに関するブロックは3種類。イベントのカテゴリにあります。
- メッセージを受け取ったとき
- メッセージを送る
- メッセージを送って待つ
「メッセージを受け取ったとき」ブロック
メッセージを受け取るブロックです。
対応するメッセージを受け取ると、「メッセージを受け取ったとき」の下に組み込まれた命令が実行されます。
「メッセージを送る」または「メッセージを送って待つ」と、「メッセージを受け取ったとき」はセットで使います。
「メッセージを送る」ブロック
メッセージをプログラム全体に送るブロックです。
また、受け取った側の処理が終了するのを待たずに次の命令を実行します。
- 「メッセージ1▼を送る」をプログラムを作る場所へドラッグアンドドロップ
- 「▼」をクリックしメッセージを選ぶ。
新たに作る場合は「新しいメッセージ」を選ぶ。 - メッセージの名前を入力して「OK」
あとで見てもわかりやすい名前をつけましょう。
「メッセージを送って待つ」ブロック
メッセージを送信するところまでは「メッセージを送る」と同じです。
「メッセージを送る」とちがうのは、受け取った側の処理がすべて終わるまで送った側の次の命令が実行されないところです。
メッセージを「送る」と「送って待つ」のちがい
「メッセージを送る」と「メッセージを送って待つ」のちがいをプログラムを作って確認してみてみましょう。
下の画像のようにプログラムを作って、実行(ネコの「こんにちは!と2秒言う」をクリック)します。
それぞれの結果は、下の画像のようになります。
「メッセージを送る」の実行結果
「メッセージを送って待つ」の実行結果
「メッセージを送る」の実行結果は、イヌの「こんにちは!」を待たずネコの「いい天気ですね。」が同時に表示されています。
それに対して「メッセージを送って待つ」の実行結果は、イヌの「こんにちは!」が終わった後にネコの「いい天気ですね。」が表示されていますね。
メッセージは複数のスプライトに送れる
メッセージを送ると、複数のスプライトやステージで受け取ることができます。
つまり、複数のスプライトに同じタイミングでそれぞれ別の動きをさせることができます。
新しくコウモリを追加しました。
ネコの「メッセージを送る」または「メッセージを送って待つ」をクリックすると、メッセージを受け取ったコウモリとイヌがそれぞれ「メッセージを受け取ったとき」の下に組みこまれたプログラムを実行しました。
よかったら、実際に動かしてちがいを確認してみてください。
- 1キー:メッセージを送る
- 2キー:メッセージを送って待つ
メッセージを使って簡単なアニメーションを作ってみた
メッセージを使ってアニメーションを作ってみました。
Pico(人)をクリックすると、ロケットが発射してネコがおくから手前に飛んでくるアニメーションです。
プログラム
Pico のプログラム
rocketship のプログラム
cat flying のプログラム
緑のハタをクリックすると最初の状態にもどります。
座標を変える値・大きさを変える値やくり返しの回数は、いい感じになるよう試しながら調整してみてくださいね。
まとめ
メッセージとは、他のスプライトやステージを動かすための合図のことです。
メッセージを送ることをきっかけに、メッセージを受け取った複数のスプライトやステージに処理をさせることができます。
メッセージの機能はアニメーションやゲームを作る時にとても便利ですよ。