本記事では、Scratch(スクラッチ)3.0で使える「イベント」カテゴリの「◇を受け取ったとき」「◇を送る」「◇を送って待つ」ブロックを実例付きで分かりやすく解説しております。
「◇を受け取ったとき」「◇を送る」「◇を送って待つ」の3つのブロックは、ブロック同士でメッセージを送ったり受け取ったりするためのものです。
以下でもっと具体的に解説します。
Scratch(スクラッチ)のプログラミングを学ぶ上で、個々のブロックの本質を理解することはとても大事なことだと考えます。
お役に立てれば幸いです。
Scratch(スクラッチ)の基本的なことや全般的な内容に関しましては以下の別記事をご覧ください。
「イベント」の「◇を受け取ったとき」「◇を送る」「◇を送って待つ」ブロック 形状とオプション(Scratch3.0)
本記事で解説しますブロックの形状と指定可能なオプションについて説明させてください。
ブロックの形状
「◇を受け取ったとき」ブロックの形状はハットブロックです。
ブロックのかたまりの一番上に置くブロックです。
「◇を送る」「◇を送って待つ」ブロックの形状はスタックブロックです。
ブロックの上下に色んなブロックを重ねられます。
指定可能なオプション
以下の値を指定できます。
「◇を受け取ったとき」ブロック
指定する場所 |
---|
(←赤枠部分) |
入力方法 |
プルダウンメニュー |
指定する内容 |
メッセージ |
単位 |
なし |
入力する文字種 |
メニューから選択 |
備考 |
メニュー内の「新しいメッセージ」でメッセージが作れる |
「◇を送る」ブロック
指定する場所 |
---|
(←赤枠部分) |
入力方法 |
プルダウンメニュー |
指定する内容 |
メッセージ |
単位 |
なし |
入力する文字種 |
メニューから選択 |
備考 |
メニュー内の「新しいメッセージ」でメッセージが作れる |
「◇を送って待つ」ブロック
指定する場所 |
---|
(←赤枠部分) |
入力方法 |
プルダウンメニュー |
指定する内容 |
メッセージ |
単位 |
なし |
入力する文字種 |
メニューから選択 |
備考 |
メニュー内の「新しいメッセージ」でメッセージが作れる |
「イベント」の「◇を受け取ったとき」「◇を送る」「◇を送って待つ」ブロックの解説(Scratch3.0)
本記事で解説する内容や押さえておきたいポイントは以下のとおりです。
- メッセージを送ることは、キーボードのキーを押したりスプライトをマウスでクリックしたりすることの代わりになる
- 「(メッセージ)を送る」ブロックは特定のメッセージを送ることができる
- 「(メッセージ)を受け取ったとき」ブロックは特定のメッセージを受け取ったらプログラムの処理を始める
- 「(メッセージ)を送って待つ」は特定のメッセージを送った後、メッセージを受け取った相手プログラムの処理が終わるまで待つ
- 受け渡すメッセージは自由に作れる
具体的な使い方を実例をまじえて解説します。
メッセージを送ることはキーボードのキーを押したりスプライトをマウスでクリックしたりすることの代わりになる
ブロックの解説を行う前に、受け渡す「メッセージ」というものについて説明します。
あなたが2つのプログラムA、Bを作ったとしましょう。
プログラムBは、プログラムAからの指示で処理を開始するように作りたいとします。
Scratch(スクラッチ)のブロックには、キーボードの特定のキーが押されたときや特定のスプライトがマウスでクリックされたときなどに処理を開始するブロックが用意されています。
※これらのブロックに関しましては別記事で解説しております
これを使えば指定したキーを入力したり、スプライトをマウスでクリックすることでBのプログラムに「動け!」と指示が出せます。
でも、キーと押したりスプライトをマウスでクリックするのは人間でして、プログラムが行うことはできません。
プログラムから別のプログラムを起動する場合にはメッセージを利用します。
「(メッセージ)を送る」ブロックは特定のメッセージを送ることができる
「(メッセージ)を送る」ブロックには、メッセージの送り先の指定はありません。
単に特定のメッセージを送るだけです。
メッセージを受け取る相手のプログラムがどれか指定しなくても、メッセージの受け取り先のプログラムはその特定のメッセージを待っていますので受け取ることができます。
例えば、教室に新任の先生と生徒がいるとします。
新任ですので生徒の名前と顔が一致していません。
でも、先生がある生徒の名前を呼ぶと、呼ばれた生徒は自分だと分かってなにか行動することができますね。
この場合の先生が呼んだ「名前」がメッセージで、その「名前」の生徒はそのメッセージを待っていたと考えることができます。
実際にメッセージを用いたプログラムを作る場合、特定のメッセージを送るプログラムと特定のメッセージを受け取るプログラムの関連性を決めるのは、プログラマーである「あなた」ということになります。
Scratch(スクラッチ)に戻ります。
プログラムAの処理の途中でプログラムBにメッセージを送りたいとします。
その場合、プログラムAにはメッセージを送りたい場所に「メッセージを送る」ブロックを置くだけです。
あとは、次節で解説します「メッセージを受け取ったとき」ブロックをプログラムBの先頭に置けば完成ということになります。
「(メッセージ)を受け取ったとき」ブロックは特定のメッセージを受け取ったらプログラムの処理を始める
前節の解説ですでに登場しましたが、「(メッセージ)を受け取ったとき」ブロックはどこから発信されるかわからない「メッセージ」をずっと待っています。
どこかで「メッセージを送る」ブロックが実行されたことが分かると、そのメッセージが自分が待っているメッセージである場合に限って、それをキッカケとしてプログラムの処理を開始します。
「(メッセージ)を送って待つ」は特定のメッセージを送った後、メッセージを受け取った相手プログラムの処理が終わるまで待つ
メッセージを送るブロックには、すでに説明しました「メッセージを送る」ブロックのほかに「(メッセージ)を送って待つ」ブロックがあります。
「メッセージを送る」ブロックはメッセージを送るとすぐに次の処理を開始しますが、「(メッセージ)を送って待つ」ブロックはメッセージを送った後、メッセージを受け取ったプログラムの処理が終わるまで待ちます。
「メッセージを送る」ブロックの処理
メッセージを送るとすぐに下のブロックの処理を実行します。
「(メッセージ)を送って待つ」ブロックの処理
メッセージを送ると、プログラムBの処理が終わるまで待ってからプログラムAの続きの処理を行います。
あなたのプログラムに合った方のブロックをお使いいただければと思います。
受け渡すメッセージは作ることができる
Scratch(スクラッチ)には「メッセージ1」というメッセージが用意されています。
もちろんあなたがメッセージを作ることも可能です。
本記事でご紹介した3つのブロックのどれでもよいですのでプルダウンメニューを開いてください。
その中の「新しいメッセージ」を選択します。
下のような画面に切り替わりました。
入力欄にメッセージの名前を入力して「OK」ボタンを押せば追加できます。
試しに「動け!」というメッセージを追加してみました。
まとめ
ブロック間で受け渡せるメッセージはとても便利です。
しかし多用しすぎますとプログラムがグチャグチャになって、分かりにくいプログラムになってしまいます。
分かりにくいプログラムは何か問題が発生した場合対応が取りづらくなります。
本サイトでは他にもScratch(スクラッチ)に関する記事を公開しております。
よろしかったらご利用ください。
最後までお読みいただきありがとうございました!
(参考)
困ったときはいつもこのサイトを参照しています
コメント