初心者OK!こどもプログラミング入門(Scratch)

子ども向けプログラミング学習の定番「Scratch」の使い方。我が子(小学1年)の初挑戦記録付き。

会話のキャッチボールも楽々!動きのきっかけを指定する

 

f:id:shufufu:20170316171501j:plain

前回のプログラミング体験(詳しくはコチラ)で、娘がかなり苦労していた「会話のキャッチボール」をさせるのに役立つブロックの使い方を見ていきます。

これを知れば、娘のお話アプリ作成力もかなりレベルアップすると思われます。

 

動き出しを決めるブロックを使おう

これまでの記事では、並べたブロックをクリックして、その指示を実行させていましたが、キャラが増えてくるとそれでは対応しきれません。

そこで便利なのが「動くきっかけ」を設定できるブロックです。

画面中央のパネルの「スクリプト」タブで「イベント」をクリックしてみましょう。ここに並んでいるブロックを使って、さまざまなきっかけを指示できます。

f:id:shufufu:20170316172034j:plain

 

「緑の旗がクリックされたとき」はアプリの起動時にさせたいことに使う

一番上にある「(緑の旗)がクリックされたとき」は、アプリを起動したときのことです。アプリの起動と同時に行わせたいことには、このブロックを付けましょう。

 たとえば、いつも決まった位置にキャラを配置した状態から始めたいゲームの場合、「(緑の旗)がクリックされたとき」に位置を指定するブロックをつなげれば、前回のアプリの終了時のキャラの位置に関わらず、同じ位置にキャラが配置された状態でゲームを開始できます。

 

自由なタイミングで始めたいときは「キー」や「クリック」をきっかけにする 

それに対して、アプリを起動してから自由なタイミングで実行させたいスクリプトには、「スペースキーが押されたとき」や「このスプライトがクリックされたとき」のブロックが便利です。

たとえば図のように、「ネコの発言」のスクリプトと、「しろくまの発言」のスクリプトの両方に「スペースキーが押されたとき」を付ければ、アプリの起動後、スペースキーを押したときに同時に発言を始めることができます。

f:id:shufufu:20170316172427j:plain

f:id:shufufu:20170316172437j:plain

 

キーを変えれば動きも自由自在 

「〇〇キーが押されたとき」のブロックは、キー名をクリックして対象のキーを変更できます。

「→キーが押されたとき」は「右に移動」、「←キーが押されたとき」は「左に移動」のようにキーを使い分ければ思い通りにキャラを動かすことができ、アクションゲームなどにも応用できます。

f:id:shufufu:20170316172544j:plain

 

他のキャラの発言をきっかけにできる

娘が前回のプログラムでキャラ同士を会話させるのに使ったのは、発言のタイミングをずらして指定する時間差攻撃的な方法です。

今回使っているネコとしろくまの会話をこの時間差で行うとすると、こんな感じ。最初がネコ、次がしろくまのスクリプトで、発言と待ち時間のブロックを組み合わせて調節しています。

f:id:shufufu:20170316172650j:plain  f:id:shufufu:20170316172656j:plain

キャラが少ない場合はこれでもなんとかなるのですが、登場人物の多い物語を作る場合などは大変です。

そこで使いたいのが「メッセージ」のやり取りを動きのきっかけにできるブロックです。これを使えば、別のキャラの発言の後に何かをさせるという指定が楽にできます。

 

発言したことを知らせるメッセージを送る 

まずはネコが最初に「さかな屋はどっちですか?」と発言。それを受けたしろくまが「ここを左だよ」と言うようにしてみます。

 「(さかな屋はどっちですか?)と2秒言う」のブロックの下に、「イベント」の「メッセージ1を送る」をつなげます。

f:id:shufufu:20170316173302j:plain

 

次に「メッセージ1」部分をクリックして、「新しいメッセージ」を選択しましょう。

f:id:shufufu:20170316173319j:plain

  

表示される画面で「メッセージ名」を入力して、「OK」をクリックします。ここではわかりやすいように発言と同じく「さかな屋はどっちですか?」というメッセージ名にしましたが、「何を知らせるメッセージか」がわかれば同じでなくてもOKです。

f:id:shufufu:20170316173336j:plain

 

これでネコが「さかな屋はどっちですか?」と発言した後、「さかな屋はどっちですか?」というメッセージを送る指示ができました。

f:id:shufufu:20170316173355j:plain

 

メッセージの受け取りをきっかけに設定する

次にしろくまの方で、「さかな屋はどっちですか?」のメッセージを受け取ったら、「ここを左だよ」と言うようにブロックを配置します。

しろくまの方はスペースキーを会話のきっかけにはしないので、「スペースキーが押されたとき」のブロックは外して、「さかな屋はどっちですか?を受け取ったとき」ブロックを発言の上にくっつけます。

f:id:shufufu:20170316173433j:plain

メッセージ内容が反映される

「メッセージを送る」、「メッセージを受け取ったとき」、「メッセージを送って待つ」のブロックの「メッセージ」の部分は、アプリ内で使ったメッセージによって変化します。

図のように表示され、どのメッセージに対して反応すべきかの設定がわかりやすくなっています。

f:id:shufufu:20170316173620j:plain

 

これで実行してみると、以下のようにネコの発言のあと、しろくまが発言します。

f:id:shufufu:20170316173819j:plain

f:id:shufufu:20170316173830j:plain

 

会話を続けさせるには「送って待つ」ブロックを使う

しろくまの発言の後にさらにネコ、しろくまと発言させたいときは、最初のネコの発言の次のブロックを「(メッセージ)を送る」から「(メッセージ)を送って待つ」に変更します。

f:id:shufufu:20170316173939j:plain

これでしろくまの発言が終わるまでネコが待つことになります。

その後「ありがとう」という発言をさせ、それをまたメッセージとして送る指示を出しています。

 

対するしろくまは、それぞれのメッセージを受け取ったときに返す言葉を、このように設定します。

f:id:shufufu:20170316174023j:plain

最初のメッセージを受け取ったときと、次のメッセージを受け取ったときのスクリプトはそれぞれ独立している点がポイントです。

こうして対応を2つのスクリプトに分けることで、Aという発言を受け取った場合はこう動く、Bという発言を受け取った場合はこう動くというように異なる指示が出せます。ロールプレイングゲームなどはこの応用ですね。

 

それでは今回作ったアプリを実行してみます。実行のきっかけとなる「スペースキー」を押します。

f:id:shufufu:20170316174328j:plain

f:id:shufufu:20170316174335j:plain

f:id:shufufu:20170316174343j:plain

f:id:shufufu:20170316174352j:plain

f:id:shufufu:20170316174402j:plain

会話のキャッチボールがしっかりできました!

 

次回は早くもP子作のアプリ第三弾を紹介予定。

プログラミングが楽しいそうで、毎日やりたがってます。プログラミング的思考も育って欲しいものです。

Copyright © 2016 初心者OK!こどもプログラミング All rights reserved.