今回は、マウスのクリックまたはスマホ・タブレットのタップであそべる簡単でシンプルなもぐらたたき風のゲームを作っていきます。
変数とクローン、それと「このスプライトが押されたとき」ブロックを使ってタッチパネルに対応させるプログラミングの基本的なテクニックが含まれています。
完成品
完成した動き
緑の旗でスタートすると、ゴキちゃんがランダムな位置から現れてステージ内を色んな方向に向かって直進します。
ゴキちゃんをマウスでクリックするかタップしてやっつけると、点滅して画面から消えます。
「やっつけた数」変数で消したゴキちゃんの数をカウントします。
スタートしてから15秒経過するとプログラムが停止します。
使用したスプライト
スプライトは「ゴキちゃん」1つだけです。
【ゴキちゃんのスプライト】
このスプライトはScratchにあらかじめ用意されているキャラクターを呼び出して使用しています。
完成したスクリプト
完成したスクリプトの全体です。
【ゴキちゃんのスクリプト】
使用している2つの変数「タイム」「やっつけた数」は「すべてのスプライト用」でつくっていますが、「このスプライトのみ」でつくってもOKです。
- タイム:すべてのスプライト用 or このスプライトのみ
- やっつけた数:すべてのスプライト用 or このスプライトのみ
スクリプトの作り方
ここからはプログラムを作っていく中でポイントとなる部分を説明します。
ポイント①:ランダムな場所にクローンを発生させる
クローンをステージ上のランダムな場所に発生させるためには、「自分自身のクローンを作る」ブロックの手前で使用したブロックが作用します。
今回のスクリプトでは、「~秒待つ」ブロックと「どこかの場所へ行く」ブロックの2つが作用しているため、クローンをステージ上のランダムな場所につくることができます。
ポイント②:それぞれのクローン別々の方向に動かす
作られたクローンは、それぞれ下図のスクリプトが個別に実行されます。
まず「表示する」ブロックでステージ上に表示して、「~度に向ける」ブロックで10度~360度まで10度おきのいずれかの方向へ向きを変えます。(「1~36のランダムな数字×10」なので)
つぎにステージの上下左右いずれかの端っこに触れるまで「6歩動かす」ブロックが繰り返し実行されます。この数字が小さいと遅く動き、大きいと速く動くことになります。
クローンが端っこまで移動したら最後にクローンを削除します。
ポイント③:タップされたクローンだけステージから消す
クローンをマウスでクリックしたり指でタップしたときに、何らかのイベント(動き)を起こしたいときは「このスプライトが押されたとき」ブロックを使います。
「このスプライトが押されたとき」ブロックはスプライト本体だけでなく、個別のクローンに対しても有効です。なお以下のブロックの組み合わせで代用することも可能です。
「やっつけた数」変数を1ずつカウントアップさせて、タップした数が合計でいくつかを確認できるようにします。
つぎに「色の効果」を0と100を繰り返すことでクローンが点滅しているような視覚効果を表現しています。
そして最後に使い終わったクローンを削除します。
ポイント④:タイマーを設定してカウントダウンする
こちらは「緑の旗が押されたとき」ブロックで始まっているので、スタート直後から動きだすスクリプトです。
「タイム」変数の初期値を「15」に設定して、変数の値が「0」になるまで1ずつ減らしています。
正確に時間を計っているのは「1秒待つ」ブロックだけです。これがあるので1秒に1ずつ減らすことが実現できています。
もし「2秒待つ」ブロックにした場合は、「タイム」変数が15から0になるまで30秒かかるということになります。
さいごに「すべてを止める」ブロックでゲームを終了します。
ここまでのポイントを押さえてスクリプトを作ることができたら完成です!
失敗しやすいポイント
特にはありません。
応用編
難易度を「かんたん・ふつう・むずかしい」の3段階に分けてあそべるようにしてみました。
ゴキちゃんの動くスピードが異なります。
まとめ
さいごに、今回の記事で説明した『簡単でシンプルなもぐらたたき風ゲームのつくり方』についてのポイントをまとめます。
- ポイント①:ランダムな場所にクローンを発生させる
- ポイント②:それぞれのクローン別々の方向に動かす
- ポイント③:タップされたクローンだけステージから消す
- ポイント④:タイマーを設定してカウントダウンする
今回はあえて『もぐら』にこだわらないもぐら叩きゲームをつくってみました。
登場させるキャラクターが何であれ、基本的にクローンを動かすこと、そのクローンがタップされたら消すのか動かすのか、そして得点アップしてタイムアップで終わる、という流れは同じようにつくれば実現できると思います。