この記事のポイント
ゲームクリアのつくり方を説明します。
学べる技術
メッセージブロックの使い方を学べます。
はじめに
前回の記事において、ガソリン残量によるタイムオーバ要素を追加しました。残るはゲームクリアの要素を追加すれば、レースゲームとしては完成となります。
あと少しでレースゲーム完成です。
前回の記事 タイムオーバーを作る
前回はガソリン残量によるタイムオーバー要素を追加しました。前回の記事は以下リンクとなります。
レースゲームを作ろうシリーズの第一弾は以下の記事となります。
スクラッチをゼロから始めたい方は以下の記事を参考にしてください。
完成作品
今回の完成作品は以下のようになります。いつものように緑色の旗ボタンをクリックしてスタートしてください。※ゲーム中は音が流れるので注意してください。
ゲームのルールは以下のとおりです。
- ←キー:車を左に移動させます。
- →キー:車を右に移動させます。
- ガソリンマークに触れるとガソリンメータが回復します。
- 2秒に1スコア上昇します。他の車に衝突するとスコアが2減ります。
- ガソリンメータが0になったときにスコアが10以上であればゲームクリア、10未満であればゲームオーバーです。
完成プログラム
新規スプライト
今回は新たに「ゲームオーバー」と「ゲームクリア」の2つのスプライトを追加します。
<ゲームオーバー>
<ゲームクリア>
既存スプライトの修正
ガソリンマークと自分の車にプログラムを修正します。
<ガソリンマーク>
<自分の車>
作るもの(仕様)を考える
いつもの通りプログラミングを始める前に作るものをザクっとでいいので考えてみましょう。
- スコアを用意して、時間ごとに増加させる。
- 他の車に衝突したらスコアを減少させる。
- ガソリン残量がなくなったときに、スコアが良ければ「ゲームクリア」を表示させ、悪ければ「ゲームオーバー」を表示させる。
事前準備
今回は新規でゲームオーバーとゲームクリアのスプライトを追加します。
自分で文字を作りたい場合には、「コスチューム」で「T(テキスト)」マークを選択すると、好きな文字をスプライトにすることができます。
またスプライトにも文字が用意されていますので、それらを組み合わせて好きな文字列を作ることができます。今回はこの方法で作成します。
以下が今回作成した文字列です。これらを新規スプライトとして登録してください。
プログラミング
では先ほど考えた作るものを一つずつプログラムしていきましょう。
スコア変数を用意する。
まずは、スコア変数をつくります。変数のつくり方の詳細は以下記事を参考にしてください。
今回もすべてのスプライトでこの変数を使えるようにしたいので、「すべてのスプライト用」で作成します。
また、今回は「スコア」の値自体をステージで確認できるようにしたいので、作った「スコア」変数にチェックを入れます。すると、ステージに「スコア」変数が表示されるようになります。
スコアを時間とともに増加させる
こちらも今まで学習したことで対応できます。スコア変数はどのスプライトでも使用できるので、自分の車のスプライトにプログラムを作りましょう。
- 以下の動きを繰り返す
- 2秒待って
- スコアを1ずつ増やす
他の車に衝突したらスコアを減少させる
つぎに、他の車に衝突したらスコアを下げるプログラムを作ります。
こちらも今までに学習したことで対応できます。自分の車のプログラムに他の車に衝突したら衝突コスチュームに変えるプログラムを作っていたはずなので、そこを修正するだけでよさそうです。
左車線、中央車線、右車線で衝突の動作を分けて作っているので、それぞれに「スコアを-2ずつ変える」ブロックを追加してください。
ガソリン残量がなくなったときに、ゲームクリア・ゲームオーバーを判定する
ガソリン残量がなくなったときにゲームクリア・ゲームオーバーを判定します。
具体的に、今回はガソリン残量がなくなったときにスコアが10以上であればゲームクリア、10未満であればゲームオーバーにしたいと思います。
このクリアスコア条件を変えるだけでゲーム難易度を変えることができます。
もしブロックを使って、スコアが9より大きい(=スコアが10以上)場合は「ゲームクリア送る」、スコアがスコアが9以下の場合は「ゲームオーバーを送る」ブロックが動作するようにします。この「〇を送る」ブロックの使い方は次で説明します。
発生したコトをきっかけにプログラムを動かす① 「メッセージを送る」を使う
何か発生したことをきっかけに別のプログラムを動作させるには、「メッセージを送る」と「メッセージを受け取ったとき」ブロックを使います。
この「メッセージ」機能はめちゃくちゃ便利なので、是非マスターして使いこなせるようにしてください。
メッセージを送るというと、何か文章のやりとりをするように思えますが、そうではありません。
イメージとしては、他のスプライトに対して、「動いてね!」という指令を送るような感じです。
まずは、「メッセージ」をつくります。
イベントカテゴリーの「メッセージを送る」ブロックの「▽」をクリックすると、「新しいメッセージ」が表れます。それをクリックしてメッセージをつくります。今回は「ゲームオーバー」と「ゲームクリア」の2つ作ります。
イベントカテゴリーの「メッセージを送る」ブロックを先ほどのもしブロックに入れます。
- スコア>9なら「ゲームクリア」を送る
- でなければ「ゲームオーバー」を送る
というようにメッセージをえらんでください。
発生したコトをきっかけに動作をプログラムを動かす②「メッセージを受け取ったとき」を使う
つぎは、メッセージを受け取った側でプログラムを動かす方法を説明します。
ここでは、「メッセージを受け取ったとき」ブロックを使います。
ゲームクリアと判断されたときに、GAME CLEARの文字を表示させるためには、
「ゲームクリア」スプライトを、ゲーム開始直後は隠しておいて、「ゲームクリア」メッセージを受け取ったときに表示させる、といったことができればよいですね。
以下のようにプログラムします。プログラムの動きはブロックの内容を読んだとおりです。
ゲームオーバーも同様の考えでつくればOKです。
ここで一旦プログラムの動作を確認してみましょう。
ガソリンが切れたタイミングでスコアが10以上だと「GAME CLEAR」の文字が表示されることが確認できると思います。
微調整 効果音をつける
せっかくゲームクリアしたのであれば、盛大にお祝いする音楽を流すようにしましょう。
以下のようにゲームクリアのときには「Cheer」を、ゲームオーバーのときには「Boing」を鳴らすようにしましょう。
効果音があると臨場感をアップさせることができますね!
さいごに
今回はメッセージ機能を使って、ゲームクリア・ゲームオーバーを表示させることができました。これでゲームとしての90%は完成しています。
いよいよカーレースゲーム作成も終盤です。次回は様々な微調整を行って、より完成度を高めたいと思います。
次回
キー操作ではなく、スマホのタッチ操作で車を動かせるようにします。ぜひチャレンジしてみてください。
コメント