・「クローン」「メッセージ」の使い方
・「マウスが押された」を使う際の注意点 など。
ゲーム作りの幅が大きく広がるブロックの使い方を覚えていきましょう!
マウスをクリックするたびに、その場所にりんごが画面に現れて、
ねこがりんごの数をカウントしてくれる、という内容です。

何個も何個も同じスプライトを使いたい、、、
○「クローン」の使い方
まずは、クローンに関するブロックを見てみましょう。
クローンとは、ゲーム内でのスプライトの複製(=コピー)のことです。
「制御」欄の中に、「クローンされたとき」、「自分自身のクローンを作る」、「このクローンを削除する」の3つがありますね。
「自分自身のクローンを作る」ブロックを使ってスプライトを複製することで、
ゲーム中に同じスプライトを何個も作っていくことができるのです。
さっそく、りんご(Apple)のスプライトを一覧から追加して、
ブロックを配置していきましょう!
今回は、
もしマウスをクリックした(=マウスが押された)なら、その都度クローンを作るので、
「ずっと」&「もし~なら」ブロックの出番ですね。
もしマウスが押されたなら、の中に、先ほどの「自分自身のクローンを作る」のブロックを配置しましょう。
配置できたら、一度、旗のボタンを押して、ゲーム画面上でクリックをしてみてください。
、、、ん?何も起きませんね、、、!
実は、クローンはちゃんと作られているのですが、
いくらクリックしても、クローンは元のりんごと同じところにどんどん作られていて、
増えたように見えません。
「クローンを作る」ブロックは、もう一つのブロック「クローンされたなら」とセットで使い、
クローンが作られたときのスクリプトを追加するようにしましょう!
今回は、マウスをクリックした場所にクローンを作りたいので、
「クローンされたとき」ブロックの下に、「マウスのポインターへ行く」をつなげれば良さそうです。
(「マウスのポインターへ行く」ブロックは、「動き」欄の中の「どこかの場所へ行く」ブロックをプルダウンで切り替えて選択)
これで、もう一度旗のボタンを押してゲーム画面をカチカチとクリックすると、
りんごが何個も出てきたと思います!
あと気になるのは、
本体のスプライトのりんごが一個、最初から置かれてしまっている点ですね。
そこで、本体のスプライトを「隠す」ブロックで非表示にして、
クローンについては、「表示する」ブロックで見えるようにしましょう!
クローンを使うときには、このように本体は隠して使うのがコツです。
後ほど、一点追加する部分がでてきますが、
これでクローンを使ってりんごを置くスクリプトは一旦完成です!
次は、りんごの数をカウントするために、「変数」を作っていきましょう!
○「変数」でりんごの数をカウントしよう
今回のりんごの数のように、
プログラム内で変わっていく数を記録(=メモ)したり、足したり引いたりして管理していきたいな、、、ということがあります。
そんなときに使えるのが、「変数」です!
「変数」というのは、自分が記録(=メモ)しておきたい数を入れておくためのカゴのようなものです。
なので、「変数」(=カゴ)は、自分で作って名前を決めてしまうことができるのです。
それが何のための変数なのか、分かりやすい名前にしましょう!
今回は、りんごの数をカウントするための変数なので、「りんごの数」という名前の変数を作っていきます。
まず、コード欄から「変数」を選んで、一番上に出てくる「変数を作る」をクリックします。
すると、以下のような変数名を入力するフォームが出てくるので、
「りんごの数」と入力しましょう。
「OK」をクリックすると、以下の画面のように作った変数が追加されます!
それでは、さっそくりんごの数をカウントするようにブロックを配置していきましょう。
旗が押されたときには、りんごは0個なので、初期化のために「りんごの数を0にする」ブロックをそのまま置けばいいですね。
では、りんごを置くたびに「りんごの数」を1ずつ増やすにはどうしたら良いでしょうか?
クローンされたときに、りんごは1個増えるので、
このように、
「りんごの数を1ずつ変える」のブロックを「クローンされたとき」の下につなげればいいですね!
これで、変数「りんごの数」の設定はうまくいったでしょうか?
旗のボタンを押してりんごをポチポチ置いて見ましょう。
すると、、、ん?!なぜかりんごの置いた数よりも、変数「りんごの数」がどんどん増えていってしまっていますね、、、。
どこに問題があるのでしょうか。
実は、変数の設定はこれで合っています。
原因は、マウスを一回押しただけなのに、クローンが何個もできてしまっている、
という部分のようです。
プログラムを組んで実行して、自分の思ったとおりに動かないことはとても良くあります。
さっそく、この部分を修正していきましょう。
○「マウスが押された」の注意点
いつも何気なくクリックしているマウスですが、、、
その一回の動作に3つの状態があることがわかりますか?
①マウスを押した瞬間
②マウスが押されている間
③マウスを離した瞬間
この①から③の一連の動作がマウスのクリックには含まれています。
プログラミングでは、これが重要な違いになります。
スクラッチのブロック「マウスが押された」は、
実はこの①と②の間は(つまりマウスを離すまでは)、ずっとマウスが押されたと認識されているんですね。
なので、マウスを押してから離すまでの間に、
一回のクリックで何個もクローンが作られてしまったのです。
では、これを回避するにはどうすれば良いかというと、、、
③の「マウスを離した瞬間」が終わるまで待った後で、クローンを作ればいい、というわけです。
マウスを離している状態、というのは、「演算」欄にある「~ではない」ブロックを使って、
以下のように表現できます。
そこで、これを「~まで待つ」ブロックと組み合わせて、「もしマウスが押されたなら」の中に配置しましょう!
これで、クリック一回ごとに一個だけりんごのクローンを作るスクリプトに修正することが出来ました!
あとは最後に、「メッセージ」を送ってねこにりんごの数をカウントしてもらえるようにすれば、今回の作品は完成です。
○「メッセージ」の使い方
「メッセージ」というのは、全部のスプライトと背景に送ることが出来る「合図」のようなものです。
旗ボタンを押すと、「旗が押されたなら」に繋げたスクリプトが実行されますよね?
それと同じように、「メッセージ」を送ると、「メッセージを受け取ったとき」に繋げたスクリプトが実行されるのです。
まずは、メッセージに関するブロックを見てみましょう。「イベント」欄の中にあります。
見つけたら、「メッセージ1」と書いてある横の▽をクリックしてください。「新しいメッセージ」というものが選択できます。
実は、変数と同様、メッセージは自分で名前を付けて新しく作ることが出来ます!
今回は、ねこにりんごの数を言ってもらうための合図を送るので、「りんごの数を言ってね」というメッセージ名にしました。
入力したら、OKをクリックします。
選べるようになった「りんごの数を言ってねを送る」ブロックを、
クローンされたときにメッセージが送られるように配置しましょう!
これで、りんごが出来るたびに、ねこに合図を送ることができますね。
最後に、メッセージを受け取る側(ねこ)の設定です。
ねこのスクリプトはとてもシンプルです。
「りんごの数を言ってねを受け取ったとき」のブロックの下に、
「こんにちは!と2秒言う」のブロックを置き、
セリフの部分を作った変数(「りんごの数」)に置き換えましょう。
これで、メッセージを受け取るたびに、ねこがりんごの数を言うようになりました。
では、旗を押してスタートして、画面をぽちぽちとクリックしてみてください!
無事、りんごが置かれるたび、ねこがりんごの数をカウントしてくれるようになりましたか?
以上で、今回のチャプターはおしまいです。
次回は、変数を使った足し算ゲームを作っていきたいと思います!
今回もありがとうございました。
→次回 <入門編>3-2 足し算・引き算ゲームを作ろう!(変数/演算/乱数)に進む
↓今回作ったプロジェクトはこちら↓
(背景など少し手を加えてあります。皆さんも練習した作品はぜひアレンジしてみてください!)