【Scratch】<入門編>3-1 りんごを数えてもらおう!(変数/クローン/メッセージ)

・変数を使ってスプライト(りんご)の数をカウントする。
・「クローン」「メッセージ」の使い方
・「マウスが押された」を使う際の注意点 など。
こんにちは、Anksです。今回もみなさまよろしくおねがいします。
前回 <入門編>2-4 ボールをよけるゲームを作ろう!(マウスについてくるスプライト)までのチャプターでは、スプライトの動きを中心に学びました。
今回のチャプターでは、「変数」「クローン」「メッセージ」といった、
ゲーム作りの幅が大きく広がるブロックの使い方を覚えていきましょう!
今回作るプロジェクトは、
マウスをクリックするたびに、その場所にりんごが画面に現れて、
ねこがりんごの数をカウントしてくれる、という内容です。
【Scratch】スクラッチ りんごをカウントするねこ
りんご1個や2個であれば、その分スプライトを追加すればいいのですが、
何個も何個も同じスプライトを使いたい、、、
そんな時に役に立つのが「クローン」です。

○「クローン」の使い方

まずは、クローンに関するブロックを見てみましょう。

【Scratch】スクラッチ クローンに関するブロック

クローンとは、ゲーム内でのスプライトの複製(=コピー)のことです。

「制御」欄の中に、「クローンされたとき」、「自分自身のクローンを作る」、「このクローンを削除する」の3つがありますね。

「自分自身のクローンを作る」ブロックを使ってスプライトを複製することで、
ゲーム中に同じスプライトを何個も作っていくことができるのです。

 

さっそく、りんご(Apple)のスプライトを一覧から追加して、
ブロックを配置していきましょう!

【Scratch】スクラッチ マウスクリックでクローンを作る

今回は、
もしマウスをクリックした(=マウスが押された)なら、その都度クローンを作るので、
「ずっと」&「もし~なら」ブロックの出番ですね。

もしマウスが押されたなら、の中に、先ほどの「自分自身のクローンを作る」のブロックを配置しましょう。

配置できたら、一度、旗のボタンを押して、ゲーム画面上でクリックをしてみてください。

 

、、、ん?何も起きませんね、、、!

【Scratch】スクラッチ クローンが重なって増えない

実は、クローンはちゃんと作られているのですが、

いくらクリックしても、クローンは元のりんごと同じところにどんどん作られていて、
増えたように見えません。

 

「クローンを作る」ブロックは、もう一つのブロック「クローンされたなら」とセットで使い、
クローンが作られたときのスクリプトを追加するようにしましょう!

【Scratch】スクラッチ クローンされたときブロックの説明

今回は、マウスをクリックした場所にクローンを作りたいので、

「クローンされたとき」ブロックの下に、「マウスのポインターへ行く」をつなげれば良さそうです。
(「マウスのポインターへ行く」ブロックは、「動き」欄の中の「どこかの場所へ行く」ブロックをプルダウンで切り替えて選択)

【Scratch】スクラッチ クローンされたときにマウスのポインターへ行く

これで、もう一度旗のボタンを押してゲーム画面をカチカチとクリックすると、
りんごが何個も出てきたと思います!

あと気になるのは、
本体のスプライトのりんごが一個、最初から置かれてしまっている点ですね。

 

そこで、本体のスプライトを「隠す」ブロックで非表示にして、
クローンについては、「表示する」ブロックで見えるようにしましょう!

【Scratch】スクラッチ 本体を隠し、クローンは表示

クローンを使うときには、このように本体は隠して使うのがコツです。

後ほど、一点追加する部分がでてきますが、
これでクローンを使ってりんごを置くスクリプトは一旦完成です!

次は、りんごの数をカウントするために、「変数」を作っていきましょう!

○「変数」でりんごの数をカウントしよう

今回のりんごの数のように、
プログラム内で変わっていく数を記録(=メモ)したり、足したり引いたりして管理していきたいな、、、ということがあります。

そんなときに使えるのが、「変数」です!

 

「変数」というのは、自分が記録(=メモ)しておきたい数を入れておくためのカゴのようなものです。
なので、「変数」(=カゴ)は、自分で作って名前を決めてしまうことができるのです。

【Scratch】スクラッチ 変数のイメージの画像

Anks
変数名は、どんな名前をつけても使い方は一緒ですが、
それが何のための変数なのか、分かりやすい名前にしましょう!

今回は、りんごの数をカウントするための変数なので、「りんごの数」という名前の変数を作っていきます。

まず、コード欄から「変数」を選んで、一番上に出てくる「変数を作る」をクリックします。

【Scratch】スクラッチ 変数を作る説明

すると、以下のような変数名を入力するフォームが出てくるので、
「りんごの数」と入力しましょう。

【Scratch】スクラッチ 変数の名前を付ける

「OK」をクリックすると、以下の画面のように作った変数が追加されます!

【Scratch】スクラッチ 新しい変数の追加後

それでは、さっそくりんごの数をカウントするようにブロックを配置していきましょう。

旗が押されたときには、りんごは0個なので、初期化のために「りんごの数を0にする」ブロックをそのまま置けばいいですね。

【Scratch】スクラッチ りんごの数の初期値追加

では、りんごを置くたびに「りんごの数」を1ずつ増やすにはどうしたら良いでしょうか?

【Scratch】スクラッチ りんごの数を1ずつ変える追加

クローンされたときに、りんごは1個増えるので、
このように、
「りんごの数を1ずつ変える」のブロックを「クローンされたとき」の下につなげればいいですね!

 

これで、変数「りんごの数」の設定はうまくいったでしょうか?

旗のボタンを押してりんごをポチポチ置いて見ましょう。

【Scratch】スクラッチ りんごの数にバグ発生

すると、、、ん?!なぜかりんごの置いた数よりも、変数「りんごの数」がどんどん増えていってしまっていますね、、、。

どこに問題があるのでしょうか。

実は、変数の設定はこれで合っています。

原因は、マウスを一回押しただけなのに、クローンが何個もできてしまっている、
という部分のようです。

【Scratch】スクラッチ バグの原因を探す

プログラムを組んで実行して、自分の思ったとおりに動かないことはとても良くあります。
さっそく、この部分を修正していきましょう。

Anks
バグを見つけて修正する、これもプログラミングの大事なプロセスです!ただ見ているだけでは学べないので、とにかく自分でも作って動かすことが習得の秘訣です。

○「マウスが押された」の注意点

いつも何気なくクリックしているマウスですが、、、
その一回の動作に3つの状態があることがわかりますか?

①マウスを押した瞬間
②マウスが押されている間
③マウスを離した瞬間

この①から③の一連の動作がマウスのクリックには含まれています。
プログラミングでは、これが重要な違いになります。

 

スクラッチのブロック「マウスが押された」は、
実はこの①と②の間は(つまりマウスを離すまでは)、ずっとマウスが押されたと認識されているんですね。

【Scratch】スクラッチ マウスを押したらの説明

なので、マウスを押してから離すまでの間に、
一回のクリックで何個もクローンが作られてしまったのです。

 

では、これを回避するにはどうすれば良いかというと、、、

③の「マウスを離した瞬間」が終わるまで待った後で、クローンを作ればいい、というわけです。

マウスを離している状態、というのは、「演算」欄にある「~ではない」ブロックを使って、
以下のように表現できます。

【Scratch】スクラッチ マウスが押されたではない

そこで、これを「~まで待つ」ブロックと組み合わせて、「もしマウスが押されたなら」の中に配置しましょう!

【Scratch】スクラッチ マウスが押されたではないを待つを追加

これで、クリック一回ごとに一個だけりんごのクローンを作るスクリプトに修正することが出来ました!

あとは最後に、「メッセージ」を送ってねこにりんごの数をカウントしてもらえるようにすれば、今回の作品は完成です。

○「メッセージ」の使い方

「メッセージ」というのは、全部のスプライトと背景に送ることが出来る「合図」のようなものです。

旗ボタンを押すと、「旗が押されたなら」に繋げたスクリプトが実行されますよね?

それと同じように、「メッセージ」を送ると、「メッセージを受け取ったとき」に繋げたスクリプトが実行されるのです。

 

まずは、メッセージに関するブロックを見てみましょう。「イベント」欄の中にあります。

【Scratch】スクラッチ メッセージに関するブロック

見つけたら、「メッセージ1」と書いてある横の▽をクリックしてください。「新しいメッセージ」というものが選択できます。
【Scratch】スクラッチ 新しいメッセージの作り方

実は、変数と同様、メッセージは自分で名前を付けて新しく作ることが出来ます!

【Scratch】スクラッチ メッセージの名前を付ける

今回は、ねこにりんごの数を言ってもらうための合図を送るので、「りんごの数を言ってね」というメッセージ名にしました。
入力したら、OKをクリックします。

【Scratch】スクラッチ クローンされたときにメッセージ

選べるようになった「りんごの数を言ってねを送る」ブロックを、
クローンされたときにメッセージが送られるように配置しましょう!

これで、りんごが出来るたびに、ねこに合図を送ることができますね。

 

最後に、メッセージを受け取る側(ねこ)の設定です。

【Scratch】スクラッチ メッセージを受け取ったときの設定

ねこのスクリプトはとてもシンプルです。

「りんごの数を言ってねを受け取ったとき」のブロックの下に、
「こんにちは!と2秒言う」のブロックを置き、

セリフの部分を作った変数(「りんごの数」)に置き換えましょう。
これで、メッセージを受け取るたびに、ねこがりんごの数を言うようになりました。

 

では、旗を押してスタートして、画面をぽちぽちとクリックしてみてください!
無事、りんごが置かれるたび、ねこがりんごの数をカウントしてくれるようになりましたか?

以上で、今回のチャプターはおしまいです。

 

次回は、変数を使った足し算ゲームを作っていきたいと思います!
今回もありがとうございました。

→次回 <入門編>3-2 足し算・引き算ゲームを作ろう!(変数/演算/乱数)に進む


↓今回作ったプロジェクトはこちら↓

(背景など少し手を加えてあります。皆さんも練習した作品はぜひアレンジしてみてください!)