カテゴリー
Scratch メンター雑記

スプライト同士を「メッセージ」でつないでみよう!

みなさんこんにちは、メンターのかもやです。

急に学校がお休みになったのはいいけど、自由にあそびに行けるわけじゃないし、ちょっとさびしいとか、たいくつな思いをしている子も多いんじゃないでしょうか。

そんな中、みなさんのたいくつしのぎになるかは分かりませんが、Scratchで「ほんやくねこ」という作品を作ってみたので、よかったらちょっとあそんでみてください。

プログラムを動かすと、日本語でなにかことばを入れるよう言われるので、好きなことばを入れてみてください。

すると、みなさんが入れたことばを、ねこたちがじゅんばんに、日本語・英語・スペイン語などに翻訳(ほんやく:あることばを別の国のことばで言いかえること)してしゃべってくれる、というものです。

ほんやくやしゃべる部分が気になる!と思ってくれたニンジャもいるかもしれませんが、今回書いていくのはじゅんばんにの部分についてです。

ねこたちが「じゅんばんに」しゃべるヒミツ

「ほんやくねこ」では、まず旗をおしたら、ステージで「日本語でことばを入力してね」とプレイヤーにたずねて答えを受け取るようにしています。

「○○と聞いて待つ」のブロックの下に「日本語を送る」というブロックがありますね。

これは、ねこたちを「じゅんばんに」しゃべらせるために使ったメッセージというものです。

Scratchの「メッセージ」は、あるスプライトからべつのスプライトに「合図」を送ったり、受け取ったりするためのものです。

説明だけだとわかりづらいので、次に日本語をしゃべるねこのコードを見てみてください。

いちばん上のブロックは、日本語のメッセージを「受け取ったとき」となっていますね。

この「メッセージを受け取ったとき」のブロックは、「はたが押されたとき」や「クリックされたとき」のブロックと同じように、それを合図にして下のブロックの命令を実行するはたらきを持っています。

上のコードでは、日本語で答えをしゃべらせるための命令をいくつかならべたあとに、今度は「英語」のメッセージを送っていますね。ここで、ほかのねこのコードを見てみると..。

先ほどとは命令の中身が少しちがっていますが、さいしょにメッセージを「受け取る」ところと、さいごにメッセージを「送る」ところは変わっていませんね。

こうやってメッセージを送ったり受け取ったりをくり返すことで、あるねこがしゃべった後にほかのねこが言語をかえてしゃべり、そしてまたほかのねこが..といった流れを作っているのです。

作る人の好きなタイミングでプログラムを動かせる!

ところで、先ほどたとえで出てきた「はたが押されたとき」や「クリックされたとき」といった動作は、すべて人間がすることですよね?

一方、メッセージを送っているのは、ステージやねこなどのスプライト、大ざっぱに言うとプログラム自身です。

つまり、メッセージをうまく使うと、人間が操作をしなくても、作る人が好きなタイミングでたくさんのスプライトを動かせるプログラムが書けちゃうのです。

前回のDojoでは、短いお話を作っていたニンジャがいましたが、メッセージをうまく使えば、

  • 人間がクリックしなくても自動でお話が進んでいく
  • 好きなタイミングでセリフをしゃべらせる(重要なセリフを3秒待ってから言わせるなど)

といったアレンジができるようになると思います。

また、今回「ほんやくねこ」で使ったことばをしゃべるブロックやほんやくブロックをいっしょに使えば、キャラクターに声を出させたり、日本語以外のことばでしゃべらせたり、といったこともできそうですね!

そこまでするのはむずかしいかなあ、と思う子は「ほんやくねこ」のコードをコピーして、

  • しゃべる言語や声をかえてみる
  • ことばのほかに、動きや音をつけてみる
  • メッセージの送り先や受け取るメッセージをかえてみる

などをしてみるとおもしろいかもしれません。

https://scratch.mit.edu/projects/375928912/

↑のリンクから、中のコードをぜひ読んでみてくださいね。