レッスン 12 フラッピーゲームをつくろう

レッスン 12 フラッピーゲームをつくろう

古典的なアーケードゲーム「フラッピー」をつくり、Scratchがマスターできたことを確認しよう


はじめに

ゲームに必要な機能を整理しよう

みなさんこんにちは!今回も新しいプロジェクトを作っていくよ。

今回のレッスンでScratchマスターコースは最後のレッスンとなるよ。

何かをつくるためにプログラミングは必ず1通りの正解がある訳ではないんだ。みんなのつくった処理も正しく動けば、正解。自由に発想してゲームを完成させよう。

まずは、今回のレッスンで作るものを見ていくよ。
今回つくるゲームには、大きく分けて3つの機能が必要だよ。
①鳥、birdのスプライトが上下に動かせる機能
②障害物、pipeが右から出現して左へ移動して消える機能
③スコアをカウントする機能

これまで学んだ方法を組み合わせて、つくることができるよ。がんばろう!

では、実際に作っていこう!


背景・スプライトを設定しよう

まずは背景を設定しよう。今回は、ライブラリから背景を選び、desertを設定しよう。

また、チャプター1でダウンロードしたbirdはコスチュームについて確認してね。wings_upのコスチューム番号が1番となっていればOKだよ。

動かす(うごかす)スプライト、birdの位置を決めよう。

さあ!ここまで、みんなの画面でもやってみよう!


鳥が羽ばたけるようにしよう

変数と鳥の羽ばたきを対応させよう

スペースキーで鳥が羽ばたく処理をつくろう

このチャプターでは、鳥の動きをつくっていくよ。鳥の動きには、落ちる処理と羽ばたいて上がる処理があるね。まずは、鳥が落ちていく処理、スペースを押す度に羽ばたき上に上がる処理を自分でつくってみよう。

ずっと、y座標(ざひょう)が減り続ければいいね。

スペースを押すたびに羽ばたくことにするよ。羽ばたく回数を表す変数『flap』をつくろう。
スペースキーが押されるたびに、flapが1ずつ増える処理をつくろう。

スペースを押さないと羽ばたいた効果が無効になる処理をつくろう。何もしなければ減り続けるため、-1ずつ減らせばいいね。マイナスの値(ね)になることのないよう、繰り返しはflapが0となるまでにしておこう。

繰り返し処理に入る前のflapやコスチュームを初期化することを忘れないようにしておこう。

次に繰り返す処理をつくっていこう。y座標が滑らか(なめらか)に変化するよう、y座標が6ずつ変わる処理を10回繰り返しながら羽が上下する処理をつくってみよう。

つくった処理を繰り返しの中に合体しよう。

ここまで完成したら、動作を確認してみよう。スペースきーを押すと、鳥が羽ばたき上がる、何もしなければ落ちる動作が確認できればOKだよ。

さあ!ここまで、みんなの画面でもやってみよう!


障害物をランダムに出現させよう

このチャプターのポイント

乱数とクローンを組み合わせて、横スクロールを実現しよう

スプライトをランダムに配置しよう

このチャプターでは、フラッピーバードの障害物となるスプライトpipeをの処理をつくっていくよ。

まずは、連続して無限にpipeが出てくる仕組みをつくり、正しく動作することが分かれば、ランダムな位置に出現するようにしよう。

まずは自分でつくってみよう!

最初にスプライトpipeを描こう。
①新しいスプライトを描くをクリック
②ベクターモードになっていることを確認して、なっていなければベクターモードに変換をクリックしてね。
③四角形のツールを選択して、2つの四角形を描く
④図形の色を選択して、下の色見本から濃い緑と薄い緑を選択
⑤塗り方がグラデーションとなるよう選択して塗りつぶす。

最終的には、サイズが30×370、つまり上下に少しはみ出るくらいに調節してね。

次に、pipeの処理をつくっていこう。最初は隠した状態で、大きさを200%にしておこう。

これで、後から縦方向にpipeの位置を上下させても、pipeが画面にうまくおさまらないことはなくなるね。
pipeが次々に出現する処理は、クローンを利用しよう。ずっと、2秒おきに生成するようにしよう。

クローンされたあとの最初の位置を決めておこう。scratchの画面の右端(うたん)は240であることに注意してね。

横方向は480あるので、繰り返す回数とx座標を減らす値(ね)をかけた値が-480となるようにしよう。

最後にクローンを削除することを忘れないようにしてね。
ここまで完成したら、途中の動作を確認しよう。pipeが右端から出現し、左端(ひだりはし)まで移動して消えていく処理が繰り返されていればOKだよ。

このままでは、ゲームが難しくないのでクローンされた時の出現位置のy座標を乱数として、上下に配置するようにしよう。

ここまで完成したら、動作を確認してみよう。pipeの隙間が、上下にランダムに配置されていればOKだよ。

さあ!ここまで、みんなの画面でもやってみよう!


ゲームの終了条件をつくろう

このチャプターのポイント

メッセージ機能を使って複数スプライトを制御しよう

メッセージを用いて、gameoverを決めよう

このチャプターでは、birdの当たり判定をつくっていくよ。birdがpipeまたは端に触れたらゲームオーバーと言う処理をまずは自分でつくってみよう。

ゲーム開始後、つまりグリーンフラッグが押されてから、制御の中にある~まで待つブロックを使って処理をつくっていこう。

当たったら、birdはGame Overと言い、メッセージgameoverを送る、その後は他のスプライトは止めておこう。

さらに、pipeの動きも止めなければいけないので、メッセージを受け取ったときにスクリプトを止めておこう。

ここまで完成したら、動作を確認してみよう。端に触れたとき、pipeに触れたとき、どちらもゲームがストップすること、birdがGameOverということが確認できればOKだよ。


さあ!ここまで、みんなの画面でもやってみよう!


スコアを表示(ひょうじ)させよう

このチャプターのポイント

スプライトどうしの位置関係をスコアと対応させよう

スコアの増加条件を考えてつくろう

このチャプターでは、pipeを通過するたびにスコアが1ずつ増えていくようにしていくよ。birdとpapeのx座標を比べて、大きくなればscoreが1ずつ増える処理をまずは自分でつくってみよう。

変数scoreをつくろう。値(ね)は、ゲーム開始時0で、pipeの隙間(すきま)を通り抜けるたびに、1ずつ増えるよ。

クローンされたpipeのx座標とbirdのx座標を比べ、birdのx座標の方が小さくなればscoreが1増えるようにしよう。

scoreの初期値は0としておこう。

ここまで完成したら、動作を確認してみよう。変数scoreの値(ね)を表示して、確認してね。

pipeの間を通過する度にscoreが1ずつ増えていればOKだよ。


さあ!ここまで、みんなの画面でもやってみよう!

TOP