【小学生プログラミング】スクラッチ(Scratch)で恐竜ゲームを作ろう

2019年3月26日

スクラッチで作ったゲームのGif
恐竜がリンゴを食べて太るゲームを作ってみました。

あるところにリンゴが好きな恐竜がいました。

この恐竜はリンゴを食べると「おいしい!」と言って太ります。

でもバナナは嫌いなので食べると「まずい!」と言って痩せます。

また、何も食べなくても痩せていきます。
その場合「りんごをめざそう」と自分に言い聞かせます。

今回は、上記の「恐竜がリンゴを食べて太っていくゲーム」の作成を通じて、子どもがプログラミングの楽しさを学ぶこと目的に書いていこうと思います。

お届けする内容はこんな感じです。

  • 小学1年生向け
  • ゲームと言ってもプログラミングに重きをおいてしっかり学ぶ
  • ブログとYoutubeで丁寧に解説

2020年、小学生のプログラミング教育が必修化されます。

その授業ではスクラッチと呼ばれるプログラミングツールを用いることが試験的に行われており、上記のゲームもこのスクラッチを使って作成しています。

また、うちの娘(現在保育園の年長)が実際に作成、プレイしており、5歳~6歳ぐらいが楽しめる内容になっていると思います。

※プログラミング教育必修化について、こちらの記事もよろしければどうぞ。


では、早速作成の工程を見ていきましょう。

恐竜ゲームのテーマは「If…」

「もし~であればA、そうでなければB」といった選択肢は、日常的に発生します。

500円持ってコンビニに行ったとして、100円のガムを買うか、120円のコーヒーを買うか、何も買わずに出ようかと悩みますよね。

この選択肢と結果を論理的に書き出すのがプログラムです。

上記の場合だと、ガムを買えば400円手元に残る。コーヒーなら380円、何も買わずに退店すれば500円といった結果が残ります。

恐竜ゲームの「もし~であればA,そうでなければB」を書き出すと以下となります。

  • もし、リンゴを食べれば太る
  • もし、バナナを食べれば痩せる
  • もし、何も食べなければ痩せる

まずはこの一連の流れがこのゲームの本軸となりますので、形にしていきます。

もし~ならA、そうでなければBを2つ使います
もし~ならA、そうでなければBを2つ使います

上図のように、制御ツリーの中にある「もし~であればA、そうでなければB」のブロック(スクリプトといいます)を2つ組み合わせます。

そしてそこに下図のように各スクリプトをはめていきます。

食べる=触れる、太る(痩せる)=サイズを変えると表現
食べる=触れる、太る(痩せる)=サイズを変える と表現する

ここでのポイントは、以下のように表現していることです。

  • リンゴ(バナナ)を食べる = リンゴ(バナナ)色に(恐竜が)触れる
  • 太る(痩せる) = (恐竜の)サイズを大きく(小さく)する

※このゲームは恐竜を実際に動かして、リンゴ(バナナ)に触れたら恐竜が太ったり痩せたりする仕組みなのですが、「食べる」、「太る」といったスクリプトは用意されていないので、それを「触れる」、「サイズを変える」といった形で表現しています。

また、恐竜のセリフも「おいしい!」「まずい!」「りんごをめざそう」と入れることで、視覚的に「リンゴを食べた」のか「バナナを食べた」のか「どちらも食べていない」のか見て取れるようにしました。

そしてもう一つ、ゲームの楽しみとして、リンゴを食べるごとにコスチュームを変えています。

恐竜のコスチュームは最初から4パターン用意されているので、リンゴを食べるたびにコスチュームが変わることで子どもが楽しいと感じるよう工夫することにしました。

リンゴ、バナナは「赤」「黄色」ではない点に注意する

ここで注意点なのですが、リンゴは赤、バナナは黄色と思い込んで色を設定するとリンゴ(バナナ)に触れても思ったように動作しません。

※この辺がプログラミングっぽいです。想定通りの動きをしないことを「バグ」と呼び、バグを解消するための原因と対策を考えます。

この原因はあらかじめ用意されているリンゴ、バナナのスプライトが原色の赤、黄色ではないからです。

この辺はYoutubeで解説して、対策を載せておこうと思います。

リンゴ、バナナ、恐竜を動かす

このゲームのプレイ方法は、自由に動き回るリンゴを狙って恐竜を動かし、見事食べることが出来たら太るのですが、バナナはお邪魔キャラで、食べないように回避することです。

なので、リンゴ(バナナ)は自由に動き回る必要があるし、
恐竜(自機)は狙った場所に移動できる仕組みにする必要があります。

リンゴとバナナの動き
リンゴとバナナは自由に動かします

リンゴとバナナのスプライトに対しては、制御ツリーにある、「ずっと~する」といったスクリプトを使います。

※これはプログラミングでは無限ループと呼ばれ、ひたすら同じ処理を繰り返します。

「ずっと~する」の間に「5秒でどこかの場所へ行く」「もし端に着いたら跳ね返る」スクリプトを挿入します。

これで「ずっと、ランダムな場所まで5秒かけて移動し、ステージの端に来たら跳ね返るリンゴとバナナ」の完成です。

マウスで恐竜の向かう場所を決めて、スペースキーで移動開始!
マウスで恐竜の向かう場所を決めて、スペースキーで移動開始!

続いて恐竜の動作ですが、マウスとキーボードを両方使って移動させることにします。

画像のようにすることで、マウスで恐竜の向かう方向を決めて、マウスのポインターが当たっている場所まで、スペースキーを押すことで恐竜が移動します。

リンゴやバナナは5秒かけて目的の場所に移動するのに対して、恐竜は1秒で移動するので、子どもでもリンゴを追いかけて食べることが出来ると思います。

このゲームはこれで完成です。最後にYoutubeで動画を撮っていますので、よろしければそちらも視聴してみてくださいね。

音声で説明をしています。

最後に

スクラッチは1から作るのではなく、元々用意されているブロック(スクリプト)をつなぎ合わせることでやりたいことを実現できるプログラミングツールです。

子どもの内に秘めたアイディアをどうやったら実現できるか親子で話し合いながら何度かチャレンジするうちに、目的を達成する順序を段々と自分の中で組み立てられるようになっていくのではないでしょうか。

Twitterもしています。(@daigo_takayama)よろしければフォローもお願いします。