こんにちは、ECF Techブログ
担当 Michiharu.Tです。
今回はこんなゲームを作ります。まずは、動画と簡単な操作説明をご覧ください。
- スタートボタンでゲームスタート
- マウスをつかって、ねこちゃんを動かします。
- 出てくる星をあつめましょう。
- むしやがいこつ、大おとこが出す波動にあたるとゲームオーバーです。
実際に遊んでみたい方は、下のScratchの共有へのリンクをご利用ください。
https://scratch.mit.edu/projects/375024492/
背景とスプライトの準備
スプライトの準備
次のスプライトをそれぞれ追加しておきます。
波動の作成
大おとこが出す波動は、円を描いて作成しています。
ゲームオーバー文字の作成
ゲームオーバーの文字も、描くの機能を使って作成していきます。
①塗りつぶしは好きな色を選んでおきます。
②枠線は使いません。
③テキストを選択します。
④フォントを選択します。
⑤適当な位置をクリックして、「Game Over」と入力します。
プログラムの作成
それではそれぞれのプログラムを作っていきましょう。
むしのプログラム
まずはむしのプログラムです。全体を表示します。
プログラムの解説
- ゲーム中何度も登場しますので、クローンを使います。
- 画面上部のどこかの位置に登場しますので、一旦ランダムな位置に移動した後、Y座標のみを上端にします。
- 1秒待つことで、プレイヤーが事前に気づけるようにしています。
- くりかえし部分のプログラムで、動きながら下に降りてきます。
がいこつのプログラム
- 基本的には、むしのプログラムと同じです。
- ランダムに移動した後に、右端に寄せています。
- 右側のプログラムはアニメーション専用です。左側のプログラムのくりかえしの中に入れてしまうと、「0.3秒待つ」の影響で、移動までゆっくりになってしまうので、別のプログラムとして作ります。
大おとこのプログラム
次は大おとこのプログラムです。次の2つの変数を、すべてのスプライト用で作成しておきます。
- ランダムに場所を移動します。
- 3回キョロキョロする動きをします。
- 波動の位置を決めるのにつかうため、変数大おとこXと大おとこYに、いまの位置をいれておきます。
- 両手を挙げる動作と同時に波動を作り出します。
波動のプログラム
つづけて、その大おとこが出す波動のプログラムです。
プログラムの解説
- 最初の波動の大きさは50%にしておきます。
- 変数大おとこXと大おとこYの値を波動のXとYにすることで、波動が大おとこの中心にきます。
- 「10回繰り返す」で大きさを少しずつ大きくしていきます。
ほしのプログラム
次は星のプログラムです。次のようになります。
プログラムの解説
- クローンされたら、ランダムな場所に移動します。
- ねこがほしを取るまで、ずっとその場に残します。
- ねこが取ったら1点入ります。
ねこのプログラム
次は主人公のねこのプログラムを見てみましょう。
プログラムの解説
- 左のブロックのかたまりは、ねこのアニメーションを交互に切り替えるだけです。
- ねこはマウスの動きにずっとついていくので、マウスのポインターへ行くを使います。
- 3つのもし~ならでは、ぶつかるとゲームオーバーになるものに触れたらとなっています。
- メッセージ1はゲームオーバーを表すメッセージです。ゲームオーバー文字のスプライトで使います。
ステージのプログラム
次はステージのプログラムを見ていきましょう。
プログラムの解説
- 4つのプログラムのかたまりは、スタートボタン(みどりの旗)がクリックされると、同時にスタートします。
- それぞれのブロックは一定の間隔で、敵や星のクローンを生み出すだけのシンプルなプログラムです。
- ここでクローンが作成されると、各スプライトの「クローンされたとき」プログラムが動き出します。
- 得点を0にするのブロックは、どれか一つのかたまりに入っていればOKです。
ゲームオーバーのプログラム
- スタートボタンが押されたタイミングで非表示にします。
- メッセージ1を受け取ったときにゲームオーバーに必要な処理をします。
- ゲームオーバーに必要な処理は、ゲームオーバー(このスプライト)を表示することと、すべてのプログラムを停止することです。
おわりに
これでゲームは完成になります。スタートボタンをクリックしてあそんでみてください。ひととおり遊んだあとは、こんなカスタマイズでよりプログラミングを楽しめると思います。ぜひ色々試してみてください。
- ステージのプログラムのそれぞれの「○秒待つ」の数字を小さくすると、難易度が上がります。
- 制限時間を設ける
- 星以外のレアアイテムを用意して、ちがう得点にする。
- 新たな動きをするモンスターを追加する。