Scratchでりんごキャッチゲームを作ろう 発展編①ゲームクリア、ゲームオーバーを決めよう

2021年7月19日

発展編では、基本編で作ったゲームをレベルアップしていきます!
今回は、「ゲームクリア」と「ゲームオーバー」のルールを作っていきます。

基本編は終わっていますか?
終わっていない場合、こちらからチャレンジしてみましょう↓
基本編① ゲームづくりの下準備

りんごキャッチゲームを作ろうトップ記事はこちら: りんごキャッチゲームを作ろうトップ記事

今回の目標は、下の動画のように、「ゲームクリア」または「ゲームオーバー」になったら、文字を表示させることです。

バババ
バババ
解説の画像が見づらい時は、画像をクリックして拡大して見てね!

ルールを決めよう

まずは、どうなったら「ゲームクリア」「ゲームオーバー」になるか決めましょう。

ルールはいろいろ考えられますが、今回は「りんごを5個キャッチしたらゲームクリア」「りんごを3個地面に落としたらゲームオーバー」というルールにしたいと思います。

もし、できる人は自分でアレンジしたルールを付け加えたり、別のルールにしてみたり、いろいろ試してみてください。

今回のルール↓

・ゲームクリアの条件:ねこがりんごを5個キャッチする。

・ゲームオーバーの条件:りんごが3個地面に落ちる。

「ゲームクリア」と「ゲームオーバー」のスプライトを用意しよう

ゲームクリアまたはゲームオーバーしたときに、急にゲームが終わってしまっては、なんかゲーム感がないですよね。なので、ゲームクリア・ゲームオーバーをプレイヤーに伝えるための仕組みを作っていきます。

これから用意するスプライトはゲームの終了をプレイヤーに伝えるためのものになります。

①『スプライトを選ぶ』ボタンにマウスカーソルをのせます。
②メニューが出てくるので、『描く』ボタンをクリックしましょう。

コスチューム(見た目)を描く画面になりました。

ここに、『Game Clear!!』という文字を描いていきます。

①『テキストツール』をクリックします。
②キャンバス内のどこかをクリックします。クリックしたところから文字を入力できるようになります。

テキストエリアに「Game Clear!!」と入力し、入力が終わったらキャンバス内のどこかをクリックしましょう。
(この記事では「Game Clear!!」という文字にしていますが、他の文字でもOKです。好きな文字を入力しましょう。)

今のままだと文字が小さいので、「水色の枠」の角をドラッグして、サイズを大きくします。
表示されている文字を見ながら大きさを調整しましょう。

文字の大きさを調整しながら、スプライトの位置も調整しましょう。

文字の真ん中に、水色の「+」マークがあるので、これをドラッグすると文字を移動することができます。

文字の大きさと位置の調整ができたら、次はフォント(文字の見た目の種類)と色を変更しましょう。

『フォント欄』をクリックすると、使えるフォント一覧が出てくるので、その中から気に入ったものを選びましょう。画像では『Marker』というものを使っています。

色も好きなものに変えましょう。画像では、「色:96、鮮やかさ:97、明るさ:100」のピンク色にしています。

フォントと色が決まったら、最後にスプライトの名前を分かりやすく「ゲームクリア」に変えておきましょう。

これで完成です。ゲームクリアの時に表示する文字ができました。

ゲームオーバーの時にも同じように「Game Over!!」と表示させたいので、「ゲームオーバー」用のスプライトを作ってみましょう。

作り方はゲームクリアと同じなので、今の手順を思い出しながらやってみてください。

ゲームクリアの文字がジャマで見づらい場合は、ゲームクリアのスプライトを非表示にすると見やすくなります。

できましたか?
画像のようにゲームオーバーのスプライトができていればOKです。

ゲームクリアしたら文字が表示されるようにしよう

ゲームをクリアしたら先ほど作成した「ゲームクリア」のスプライトが表示されるようにプログラミングしていきましょう。

プログラムを考えよう

基本編と同じように、実際にScratchでプログラムを作る前に、どんなプログラムにすれば良いのか考えましょう。

やりたいこと

プログラムでやりたいことを整理していきましょう。

やりたいことは「ゲームをクリアしたらゲームクリアのスプライトを表示する」なのですが、もう少し具体的に考えてみます。

最初に決めたルールでは、ゲームのクリア条件は「ねこがりんごを5個キャッチする」でしたね。なので、やりたいことは次のようになります。

・ねこがりんごを5個キャッチしたら、ゲームクリアのスプライトを表示する。

必要な処理

やりたいことを実現するために、どんな処理が必要になるのか考えていきましょう。

りんごを5個キャッチしたらゲームクリアとなるので、「ねこがりんごを何個キャッチしたのか数える」必要がありますね。

そして、「ねこがりんごを5個キャッチしたら、ゲームクリアのスプライトを表示」します。5個キャッチするまでは、「ゲームクリアのスプライトは隠しておきます」。

必要な処理をまとめると次のようになります。

・ねこがキャッチしたりんごの数を数える。

・ねこがりんごを5個キャッチしたらゲームクリアのスプライトを表示する。

・ゲームクリアのスプライトは隠しておく。

処理の順番

どんな順番で処理すればいいのか考えていきましょう。

まずは、ゲームクリアのスプライトを隠す必要があります。ゲーム開始したときに表示されていたらおかしいですからね。

「ゲームクリアのスプライトを表示する」タイミングは5個りんごをキャッチしたらなので、「キャッチしたりんごの数を数えて」おいて、5個になったら表示させます。なので、「キャッチしたりんごの数を数える」が先で、5個になったら「ゲームクリアのスプライトを表示する」となりますね。

まとめると次ようになります。

①ゲームクリアのスプライトは隠しておく。

②ねこがキャッチしたりんごの数を数える。

③ねこがりんごを5個キャッチしたらゲームクリアのスプライトを表示する。

プログラミングしよう

どんなプログラムを作れば良いのか分かったら、実際にプログラミングしていきましょう。

Question
困っている人
困っている人
どのスプライトにプログラミングしたらいいんだろう?
スプライトがいっぱいあってわかんない…。
バババ
バババ
誰(何)がどんなことをしたいプログラムなのか」を考えて、『誰(何)が』にあたるスプライトにプログラミングしよう!

<解説>

スプライトが増えてくると、どこにプログラミングしたら良いのか分からなくなってしまうことがありますよね。

そんなときは、そのプログラムが誰(何)がどんなことをしたいプログラムなのか」考えてみましょう。そして、『誰(何)が』にあたるスプライトにプログラミングしましょう。

例えば、今回の「①ゲームクリアのスプライトは隠しておく。」という処理は、「ゲームクリアのスプライトが、自分自身を隠す」と言い換えることができます。(Scratchの『隠す』ブロックは自分自身しか隠すことができないため。)

このとき、先ほどの『誰(何)が』にあたるのが「ゲームクリア」のスプライトになるので、「①ゲームクリアのスプライトは隠しておく。」という処理は、「ゲームクリア」のスプライトにプログラミングします。

このように、「誰(何)がどんなことをしたいプログラムなのか」を考えて、どこにプログラミングすれば良いのか決めましょう。

もし、この考え方でプログラミングしてみたら、難しかったり、詰まってしまったりした場合は、「誰(何)が」を別のものに変えることができないか考えてみましょう。

例えば、前回の基本編④では、「ねこがりんごに触れたらキャッチした」とプログラミングしましたが、「りんごがねこに触れたらキャッチした」と考えることもできます。

このように、「誰(何)が」を別のものに変えてみると、うまくできるかもしれません。

プログラミングの正解は1つだけではありません。作る人によっていろいろなプログラムができるので、どうやったらできるのかいろんなやり方を考えながらプログラミングしていきましょう。

↑この考え方を使ってプログラミングしていきましょう!

①ゲームクリアのスプライトは隠しておく

Question」のコーナーでも出てきましたが、『ゲームクリアのスプライトは隠しておく』は『ゲームクリアのスプライトが、自分自身を隠す』と言い換えることができます。

これは、今回使用する『隠す』ブロックは自分自身しか隠すことができないためです。

『誰(何)が』にあたるのが「ゲームクリア」のスプライトなので、「ゲームクリア」のスプライトにプログラミングしていきます。

ゲーム開始したときに「ゲームクリア」の文字が表示されていたらおかしいので、ゲームが開始されたらすぐに隠すようにプログラムしていきます。

①「ゲームクリア」のスプライトをクリックしましょう。
②「イベント」の中にある『緑の旗が押されたとき』ブロックをドラッグしましょう。
③「見た目」の中にある『隠す』ブロックをドラッグして、『緑の旗が押されたとき』ブロックの下にくっつけましょう。

これで、ゲームが開始されたら「ゲームクリア」の文字が隠れるようになりました。

②ねこがキャッチしたりんごの数を数える

「りんごの数」というブロックはScratchには用意されていないので、自分で用意する必要があります。こんな時に使うのが、『変数』ブロックです。『変数』ブロックに「キャッチしたりんごの数」という名前を付けて、キャッチしたりんごの数を覚えさせましょう。

①コードブロックの『変数』をクリックしましょう。
②変数の中にある『変数を作る』をクリックしましょう。

新しい変数を作る画面が表示されるので、変数の名前を付けましょう。

①変数名に「キャッチしたりんごの数」と入力しましょう。
②変数名を入力したら、「OK」をクリックしましょう。

これで、新しい変数ができました。

この変数を使って「りんごの数を数える」という処理を作っていきます。

この処理は「ねこがキャッチしたりんごの数を数える」ので、「ねこ」のスプライトにプログラミングします。

「ねこがりんごをキャッチするプログラム」は前回の基本編④ですでに作っているので、そのプログラムに「りんごを数える」という処理を追加していきます。

①「ねこ」のスプライトをクリックしましょう。
②変数の中にある『キャッチしたりんごの数▼を1ずつ変える』というブロックを、『もしApple▼に触れたなら』の中にドラッグしましょう。

これで、ねこがりんごに触れるたびに、「キャッチしたりんごの数」が1ずつ増えていきます。

実行して確認してみてください。ねこがりんごに触れるたびにゲーム画面の左上の数字が1ずつ増えてますよね。

でも、これだけでは不十分です。ゲームを止めてから、もう一度実行してみてください。前回のゲームの数字がリセットされずに、そのまま数字が増えているのが確認できると思います。

これでは正しい数が数えられないので、ゲームが開始されたら数字がリセットされるようにしましょう。

変数の中にある『キャッチしたりんごの数▼を0にする』というブロックを、『緑の旗が押されたとき』ブロックの下にドラッグしましょう。

これで、もう一度確認してみてください。ゲームを開始すると、「キャッチしたりんごの数」が「0」にリセットされるようになりましたね。

これで、「キャッチしたりんごの数を数える」プログラムは完成です。

③ねこがりんごを5個キャッチしたらゲームクリアのスプライトを表示する

この処理は「ねこがりんごを5個キャッチしたらゲームクリアを表示する」ので、「ねこ」のスプライトにプログラミングします。

ただし、スプライトを表示するブロックは、表示したいスプライトに置かないといけません。ゲームクリアのスプライトを隠すときに使った『隠す』ブロックと一緒ですね。

なので、今回は次のようにプログラミングします。

ねこのスプライト:キャッチしたりんごの数が5個になったらメッセージを送る。
ゲームクリアのスプライト:メッセージを受け取ったら表示する。

先ほど、「キャッチしたりんごの数を数えるプログラム」を作ったので、それを利用して、ねこのスプライトに「キャッチしたりんごの数が5個になったらメッセージを送るプログラム」を作っていきます。

①制御の中の『もし<>なら』ブロックをドラッグし、『触ったよ▼を送る』ブロックの下にくっつける。

『もし<>なら』ブロックを使って、「もしキャッチしたりんごの数が5個なら」という条件を作っていきます。

②演算の中にある『○=50』というブロックをドラッグして、『もし<>なら』ブロックの「<>」の部分にはめこみましょう。

③変数の中にある『キャッチしたりんごの数』ブロック(先ほど自分で作成した変数)をドラッグして、『○=50』ブロックの「○」の部分にはめこみましょう。

④『キャッチしたりんごの数=50』ブロックの「50」を「5」に変えましょう。

これで、「キャッチしたりんごの数が5個になったら」の部分ができました。
次に、「メッセージを送る」部分を作っていきます。

①イベントの中の『触ったよ▼を送る』ブロックをドラッグして、『もしキャッチしたりんごの数=5なら』の中にくっつけましょう。
※下の画像では『触ったよ▼を送る』となっていますが、メッセージ名(「触ったよ」の部分)が別の名前になっているかもしれません。もし『触ったよ▼を送る』ブロックがない場合は、イベントの中の下から2つ目のブロックを使用してください。

『触ったよ▼を送る』ブロックに設定されているメッセージはりんごをキャッチしたときに使用したメッセージなので、別のメッセージを用意します。

今回は、ゲームクリアを教えるメッセージなので、「ゲームクリア」というメッセージにします。

②『触ったよ▼を送る』ブロックの「触ったよ▼」の部分をクリックしましょう。
③メニューが表示されるので、「新しいメッセージ」をクリックしましょう。

④新しいメッセージ名に「ゲームクリア」と入力しましょう。
⑤入力したら、「OK」をクリックしましょう。

これで、「メッセージを送る」の部分も完成しました。

突然ですが、ここでもうひとつ処理を追加しておきたいと思います。

「ゲームクリア」を送ったら、ゲーム終了となるため、これ以降は操作できないようにします。

やり方は簡単です。今作った『ゲームクリア▼を送る』ブロックの下に、制御の中にある『すべてを止める▼』をくっつけるだけです。

これで、りんごを5個キャッチしたら、ねこが操作できなくなります。実行して確認してみてください。

ねこに対してのプログラムが完成したので、次に「ゲームクリア」のスプライトに「表示するプログラム」を作っていきます。

①「ゲームクリア」のスプライトをクリックしましょう。
②イベントの中の『ゲームクリア▼を受け取ったとき』ブロックをドラッグしましょう。
※もし、メッセージが「ゲームクリア」になっていない場合は、「ゲームクリア▼」の部分をクリックして、ゲームクリアを選びましょう。

③見た目の中の『表示する』を『ゲームクリア▼を受け取ったとき』の下にくっつけましょう。

これで、ゲームクリアしたら文字が表示されるようにするプログラムは完成です。

実行して確認してみましょう。りんごを5個キャッチしたら「ゲームクリア」のスプライトが表示されたらOKです。

ゲームオーバーになったら文字が表示されるようにしよう

りんごが地面に3個落ちたらゲームオーバーの文字が表示されるようにプログラミングしていきましょう。

このプログラムは、先ほど作ったゲームクリアのプログラムと同じような考え方・仕組みで作ることができます。

今回は、自分で考えてやってみましょう。ゲームクリアの文字を表示されるときにどうやったか思い出しながら挑戦してみてください。

もし、分からなかったらヒントを見てね↓

<やりたいこと>
りんごが地面に3個落ちたら、ゲームオーバーの文字を表示する。

<必要な処理と順番>
①ゲームオーバーのスプライトを隠す。
②りんごが地面に落ちた数を数える。
③りんごが、地面に3個落ちたらゲームオーバーのスプライトを表示する。

<プログラミングするスプライト>
①ゲームオーバーのスプライトを隠す:
ゲームオーバーのスプライトが自分自身を隠すので、ゲームオーバーのスプライトにプログラミングします。

②りんごが地面に落ちた数を数える:
りんごが地面に落ちた数を数えるので、りんごのスプライトにプログラミングします。

③りんごが、地面に3個落ちたらゲームオーバーのスプライトを表示する:
りんごが、地面に3個落ちたらゲームオーバーを表示するので、りんごのスプライトにプログラミングします。ただし、「スプライトを表示する」ブロックは表示したいスプライトに置かないといけないので、ゲームオーバーのスプライトを表示する部分は、ゲームオーバーのスプライトにプログラミングします。

<プログラミングのヒント>
①ゲームオーバーのスプライトを隠す:
ゲームが開始されたらゲームオーバーのスプライトを隠すようにしましょう。

②りんごが地面に落ちた数を数える:
新しい変数を作って、りんごが地面に触れた回数を数えましょう。
最初に変数をリセットするのも忘れずに!

③りんごが、地面に3個落ちたらゲームオーバーのスプライトを表示する:
新しい変数が「3」になったらメッセージを送って、ゲームオーバーのスプライトを表示しましょう。メッセージはゲームオーバー用に新しいメッセージを用意しましょう。
新しい変数が「3」になったらゲーム終了なので、これ以降ゲームが動かないようにしましょう。

できましたか?
実行してみて、以下のことができていればOKです。

・地面に落ちたりんごの数を数えられている。
・りんごを3個地面に落としたら、ゲームオーバーのスプライトが表示される。
・ゲームオーバーのスプライトが表示されたら、ねこを動かせなくなる。
・何回か実行したときに、毎回地面に落ちたりんごの数が「0」にリセットされてからゲームが開始される。

↓はプログラムの回答例です。

<りんごのスプライト>

<ゲームオーバーのスプライト>

もし、同じようになっていなくても、やりたいことがきちんとできていれば問題ありません。

プログラムは色んなやり方があるので、人によって方法は様々です。大事なことは、「やりたいことがきちんと実現できているか」です。

実行して確認してみよう

最後に、ゲームを実行してみて、今回作ったプログラムがきちんと動くかチェックしましょう。

下の動画のような動きになっていればOKです。

まとめ

お疲れ様でした!
これで、「ゲームクリアとゲームオーバーのルール」ができました。

ルールができて、よりゲームらしくなってきましたね。でも、音がないとなんだか寂しいですよね。

なので、次回はゲームに音をつけていきます。

次の記事「発展編②」はこちら↓
発展編② 音をつけよう

りんごキャッチゲームを作ろうトップ記事はこちら↓
りんごキャッチゲームを作ろうトップ記事

おすすめ

Scratchでのプログラミング学習におすすめの書籍です。

Scratch

Posted by バババ