「ブロックがどんどん増えてる!」

以前、わが家では6歳の子どもと一緒に「ブロックなしのブロック崩し」を作りました。ボールを台(パドル)で跳ね返すだけのシンプルなゲームです。今回はそこに、いよいよ崩すための「ブロック」を追加しました。

そのときに使ったのが「クローン」というしくみです。この記事では、クローンで画面にブロックを並べた体験を紹介します。繰り返し(ループ)が目に見えてわかる瞬間や、ボールが当たるとブロックが消えるしくみ、マウスでパドルを動かすコツも、できたこと・難しかったことを正直にお伝えします。

※「スプライト」とは、Scratchで動かすキャラクターや絵のことです。「パドル」はボールを跳ね返す台、「ループ」は同じ動きをくり返す命令のことです。記事の中であらためて説明します。


前回の「ブロックなしのブロック崩し」に続きを足す

以前作ったのは、ボールと台だけのシンプルなゲームでした。崩すブロックがなく、「ボールを下に落とさないように台で跳ね返し続ける」だけの内容です。

それでも子どもは何度も遊んでいましたが、ふと「本物のブロック崩しみたいに、崩すブロックを置きたい」という流れになりました。

そこで今回は、画面の上のほうに並んだブロックを追加して、ボールが当たると消える——いわゆる「ブロック崩し」らしい形を目指しました。

ここで問題になるのが、「ブロックをたくさん並べるにはどうするか」です。1つずつ手で並べることもできますが、数が多いと大変です。そこで登場するのが「クローン」というしくみでした。


クローンって何?──スプライトの「分身」を作るしくみ

クローンとは、ひとことで言うと「スプライト(キャラクターや絵)の分身(コピー)を、プログラムの途中で増やすしくみ」です。

たとえば、ブロックのスプライトを1つだけ用意しておきます。そのブロックに「自分のクローンを作る」という命令を出すと、まったく同じ見た目のブロックがもう1つ増えます。元は1つでも、命令しただけ分身がどんどん増えていくのです。

  • もとになるスプライトは1つだけ用意すればよい
  • 「クローンを作る」と命令すると、同じものがコピーされて増える
  • 増えたクローンは、それぞれ別々に動かしたり消したりできる

ブロック崩しのように「同じ形のものをたくさん並べたい」ときに、とても便利なしくみです。20個のブロックがほしいときも、20個を手で置くのではなく、「クローンを20回作って」とお願いするイメージです。

クローンのブロックは、Scratchでは「制御」というオレンジ色の仲間に入っています。「○○のクローンを作る」「クローンされたとき」「このクローンを削除する」の3つをセットで使います。


繰り返し(ループ)でクローンを作ると、ブロックが目に見えて増える

クローンを「たくさん」作るときに組み合わせるのが、繰り返し(ループ)です。

ループとは、「同じ命令を何回もくり返す」しくみのことです。「クローンを作る」を1回だけ書いて、それを「○回くり返す」で囲むと、その回数だけクローンが作られます。

今回は、このループを使って、ブロックを横や縦に少しずつずらしながら並べていきました。1回くり返すごとに、ブロックを少し横に動かして、またクローンを作る——これを何度もくり返すと、ブロックがきれいに並んでいきます。

ここで、思いがけない発見がありました。ブロックが1つずつ、ポン、ポンと画面に増えていく様子が、目に見えてわかるのです。

Scratchのブロック崩しで、ループ(くり返し)を使ってブロックが1つずつ増えていく様子のアニメーション
▲ 何もない状態から、ループが1回まわるごとにブロックが1つずつ増えていきます(実際の画面)

子どもはこれにとても驚いていました。一瞬で全部出てくるのではなく、くり返しのたびに1つずつ生まれていく。「今、くり返しが動いてるんだ」というのが、文字の説明なしに伝わる瞬間でした。

繰り返しは、言葉で「同じことを何回もやるんだよ」と説明しても、なかなかピンとこない概念です。でも、クローンが1つずつ増えていくのを見ると、「くり返すって、こういうことか」と体で感じられます。これは、繰り返しの基本を覚えるのにとても良い教材だと感じました。


ボールが当たるとブロックが消える(当たり判定)

ブロックを並べただけでは、まだ「崩せ」ません。次に、ボールがブロックに当たったら、そのブロックを消すしくみを足しました。

ここで使ったのが「当たり判定」という考え方です。当たり判定とは、「キャラクター同士がぶつかったことを見つけて、反応させるしくみ」のことです。

今回の場合は、こう命令しました。

  • もし、ボールが自分(ブロックのクローン)に触れたら
  • このクローンを削除する(消す)

「もし〜したら、こうする」という形は、前回のブロック崩しでも出てきた考え方です。プログラミングの言葉では「条件分岐」と呼びますが、難しい名前は今はいりません。「ボールが当たったら消える」という自然な日本語で十分です。

正直にお伝えすると、このクローンや当たり判定のコードを組んだのは親です。6歳の子どもが自分で書くにはまだ少し難しい段階で、ここは「親が作って、子どもは動きを楽しむ」かたちにしました。それでも、自分のゲームでブロックがちゃんと消えるのを見て、満足そうにしていました。


マウスでパドルを動かす──操作のコツと「止まる」問題

下のパドル(台)は、マウスで左右に動かすようにしました。マウスを動かすと、それに合わせてパドルが追いかけてくるしくみです。

実際に遊んでみると、ひとつ困ったことが起きました。途中でパドルが動かなくなるのです。

子どもは「あれ、動かない」と言っていました。原因を考えてみると、おそらくマウスのカーソルが画面(ステージ)の外まで行き過ぎて、反応する範囲から出てしまったのだと思います。パドルは「画面の中にいるマウス」を追いかけるので、カーソルが遠くに行きすぎると、ついていけなくなるようです。

このことから、2つの気づきがありました。

  • マウスを動かすコツの練習になる:画面の中で、行きすぎないようにマウスを動かす感覚は、遊びながら自然と身についていきそうです
  • 止まったら:マウスを画面(ステージ)の中にもどせば、また動き出します。これはマウスが画面の外に出ると起きるしくみ上のことなので、ステージを全画面表示にすると(画面が大きくなり)カーソルが外に出にくくなります

ブロック崩しは、マウス操作にちょうどよい練習にもなる——そんな発見もありました。


子どもの反応と、親として気づいたこと

今回いちばん印象的だったのは、ループでブロックが増えていくのを見たときの驚きでした。

これまで「繰り返し」は、キャラクターをずっと動かしたり音を鳴らしたりする形で使ってきました。でも、動き続けるものは「ずっと同じ」に見えてしまい、「何回くり返しているか」は実感しにくいものです。

その点、クローンは1回くり返すごとに、1つ結果が増えるので、繰り返しの回数がそのまま目に見えます。「くり返すと、こんなにたくさんできるんだ」という手応えが、表情からも伝わってきました。

コードを組んだのは親でも、「自分のゲームにブロックが並んで、当たると消える」という体験は、子どもにとって立派な完成でした。難しいしくみは少しずつ親が補いながら、「動く・見える・楽しい」を先に味わってもらう。今のわが家には、この進め方が合っているようです。


まとめ

  • クローンは「スプライト(キャラクター)の分身を、プログラムの途中で増やすしくみ」。同じものをたくさん並べたいときに便利
  • 繰り返し(ループ)でクローンを作ると、ブロックが1つずつ増えていくのが目に見えて、繰り返しの意味が体で分かる
  • 「もしボールが当たったら、このクローンを消す」という当たり判定で、ブロック崩しらしく崩せるようになる
  • クローンや当たり判定のコードは難しければ親が補い、子どもは「動く・見える・楽しい」を先に味わえばよい
  • マウスでパドルを動かすと、画面の外までカーソルが行くと止まることがある。マウス操作の練習にもなる

次回は、ブロックを全部消したら「クリア!」と表示する終わりかたや、崩した数を数える「変数」にも、少しずつ触れていきたいと思います。

前の記事Scratchでブロック崩しを作った:まねして学んだゲームのしくみ(今回ブロックを足したゲームの、最初のかたち)

関連記事