大人が子供に教えるScratch講座(重力のあるゲーム)を行いました

こんにちは、くのへです!
2024年8月10日(土)に大人が子供に教えるためのScratch講座を実施しました。
今回は「重力のあるゲーム」がテーマです。
その内容についてザッとこちらで紹介させて頂きます!

この講座の目標(ゴール)

ファーストゲートでは大人が子供に教えるためのIT講座を行っており、Scratch関連を毎月1回行っています。
今回は「重力」をScratchでプログラミングする方法を講座として行いました。
また、子供に「そもそも重力とは」をどう指導したら分かりやすいか、についても筆者の経験をもとに解説しました。

以上のような概要ですが、この講座は以下にコミットする内容の学習を行いました。

1.Scratchで重力を使ったゲームを作れるようになる
2.床との接触判定を習得する

講座内容のご紹介

作るゲームのご紹介

講座では「フラッピーバード」と呼ばれる種類のゲーム、およびインターネット環境が無いときにChromeを開くと遊べる「Google恐竜」のようなゲームを作りました。

重力が関係するゲームと言えばマリオのようなゲームがイメージに浮かぶかもしれませんが、マリオは画面スクロール・パワーアップアイテム・敵のAIなど実は結構難しい要素が含まれているため、最初からマリオを目指すと挫折する可能性が高いと思います。
そこで、子供に指導する際には、まずは「フラッピーバード」と「Google恐竜」の2種類のゲームを作って、重力や床との接触判定のプログラムをしっかりと理解してサラサラっと作れるようになってから挑んだ方が良いと考えています。

【フラッピーバード】
フラッピーバードとは、空中ジャンプできるキャラクターが前から飛んでくる敵を避けていくゲームです。
講座では以下の動画のゲームを作り方を習得しました。
重力ゲームの最も基本的な動きを習得することが出来ます。

【Google恐竜】
Google恐竜は前から近づいてくる障害物をジャンプで避けていくゲームです。
講座では以下の動画のゲームを作り方を習得しました。

Google恐竜はフラッピーバードの「床あり版」であり、床との接触判定が必要になります。
また空中ジャンプが出来るのはおかしいので、「床との接触している時だけジャンプできる」というプログラムにする必要があります。フラッピーバードの次はこのゲームを指導するといいと思います。

重力を子供にまずは理解してもらおう

重力をしっかりと習うタイミングは、高校の物理だと思いますので、小学生くらいのお子さんに重力を理解してもらうことはかなり難しいと思います。
しかし、重力加速度の数値(9.80665m/s2)やF=maのような「教科としての物理」の説明を割愛すれば、十分に小学生でも理解することは可能です。

筆者はNHK for Schoolの「Why プログラミング」の「カエルをジャンプさせろ」の解説が非常に素晴らしいと思っております。
この解説は無料でNHKが公開しています。この講座でも「是非この内容を子供に見せて下さい」と解説しました。

↓リンク先が「カエルをジャンプさせろ」です。
https://www2.nhk.or.jp/school/watch/bangumi/?das_id=D0005180309_00000

このNHKの動画を見ていると、本当に分かりやすくキャラがジャンプした時の動きやScratchでの重力の実装方法について解説されています。
↓この図が本当に分かりやすいと思います。

フラッピーバード作り

重力の指導について学んだ後、実際にフラッピーバードをプログラミングしました。

まずはキャラ(スプライト)をセット!!ネコと恐竜をセットし、サイズなども調整。

そして、一番のポイントである「y速度」という変数を作成します。

そして、次のコードで重力とジャンプを実装できることを習得しました!(①がジャンプのコード)

あとは、恐竜を1秒に1回出現させるようにクローンさせ、、、

y座標を乱数を使ってランダムにし(下図①)、右から左へ移動させるプログラムを作って出来上がり!

これでネコがぴょんぴょんしながら恐竜を避けるゲームの出来上がりです。
ここまでのプログラムでは恐竜とネコがぶつかっても何も起きませんが、子供に指導する際には、まずはここまでのプログラムを自力で5分くらいで作れるようになるまで繰り返し練習させてあげると良いと思います。
繰り返し練習すれば、重力や速度について深く理解することが出来ます。

講座では、この後 ネコが恐竜に当たった時にライフが減ることを実装する方法も習得しました。
お子さんが重力を完全に理解したら、ライフの作り方も教えてあげるとステップアップを感じるはずです!
(ハートをスプライトとコスチュームで実装する方法を学びました)

Google恐竜作り

Google恐竜作りは、途中まではフラッピーバードと同じです。

まずはキャラを準備します。恐竜と木のスプライトを設置し、サイズなども調整します。
また、床もスプライトとして実装しました。

恐竜には、フラッピーバードと同じく、次のコードを与えました。
ただし後で「床との接触判定」を追加するため、ジャンプのコード(下図①部)は「y速度を-1ずつ変える」と「y座標をy速度ずつ変える」の間に設置しました。

そして床との接触判定を追加します。下図①部のコード追加すると、床(スプライト1)に接触すると落ちなくなります。

ただ、これだと恐竜が2段ジャンプ出来てしまいます。

そこで、床と触れている時のみジャンプできるように先ほどのコードを次のように改造します。
これで床(スプライト1)と触れている時だけ、スペースキーによるジャンプが出来るようになります。

「床と触れている時だけジャンプできるようにする」というロジックは、多くの重力ゲームで使われているため、是非習得して欲しいロジックです。
お子さんがこれを完全に理解したら、現実世界においても同様であることに気が付くでしょう。「ジャンプが出来る」条件に「足が床についている」ことが必要であると再認識することができるので、子供に物理を深く考えさせるきっかけになると思います。

さて、後はフラッピーバードのように、障害物(木のスプライト)を右から左に移動させるプログラムを施せばGoogle恐竜の完成です!

ただし同じタイミングで障害物が来ても面白くないので、障害物の生成のタイミングを乱数にしたりして、もっと面白いゲームになるような工夫も習得しました。

押し返しロジック

この講座では、最後に「押し返しロジック」というものも学びました。
例えば恐竜が左右に動くことができ、床に傾斜があったとします。この時、恐竜が右に進むと、床にめり込んでしまいます。

これを上手く解決するのが「押し返しロジック」です。
まず、コスチュームに「センサー」となる形を作ります。今回このセンサーは恐竜の足のちょっと上のあたりにセットしました。

そして、次のコードを追加しました。
これは「センサーのコスチュームが床と触れていたら、床と逆方向(上方向)に押し返す」というロジックです。

これを実装すると、恐竜は傾斜を登ることが出来るようになります。

この押し返しロジックは多くのゲームで使われています。
例えば壁にぶつかった時、逆方向に移動させれば壁を通過できない仕組みの出来上がりです。

この講座では押し返しロジックは補足的に解説しましたが、押し返しロジックを使ったゲームの作り方の講座もそのうち開設したいと思います。

おわりに

この記事では2024年8月10日(土)に行ったScratch講座(重力のあるゲーム)について紹介致しました。
小学生の頃から、重力についての素養を身に付けておけば、高校の物理で重力加速度等を習得する際に大きなアドバンテージを持つことが出来ます。
x方向とy方向のベクトルの理解にも繋がります。ゲーム作りを通して体験型で理解を深めるのは本当に良い経験になると思います。

さて、Scratchは子供にプログラミングの素養や科学に対する理解を与えることが出来る強力なツールだと思います。ただ、親が子供にScratch本を渡すだけになってしまうと、なかなか子供は学習出来ないと思います。
筆者は大人達がScratchを習得し、子供に教えてあげる、という方法が経済的にも家族のつながり的にも素晴らしい方法だと思っています。特に、親が作ってくれたゲームは子供は喜んで遊んでくれますし、すごく興味を持ってくれます。
筆者は親子でスキルアップできる環境をつくるサポートが出来ればいいなと思っています。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
Contents