2016.08.16Scratch で始める小学生からのプログラミング
スクラッチでGo(3):小学生からのプログラミング
みなさま、こんにちは。代表の小林です。夏本番で大変暑い日が続いておりますが、いかがお過ごしでしょうか。 さて、今回の記事は、スクラッチGoの最終回となります。前回は、モンスターボールを投げて捕まえる時の動きと、モンスターの動きを作りました。ゲームとして面白くするためには、やはりスコアなどの要素を付け加えたいところです。今回は、スコアに相当する経験値の追加とレベルアップ、ならびに、ゲームオーバーの処理に関して説明をしていきます。
ステップ5:経験値とレベルアップ
スコアに相当する要素として、経験値とレベルアップをいれてみたいと思います。経験値は、モンスターを捕まえたときに得られるもので、Pokemon Goと同じく、1匹捕まえると100の経験値を得られるものとします。また、レベルは次の式で求められる経験値をためた場合に上がるものとします。
レベルアップ=現在のレベル*1000
つまり、レベル1であれば経験値1000でレベルアップ、レベル2であれば経験値2000でレベルアップということです。(レベル10位上になると相当萎えそうです。この辺りは厳密にはもう少し検討したほうがいいかもしれません。)レベルが上ったときには、レベルアップのメッセージを表示し、経験値の値を0にクリアし、レベルを一つ足します。次のような流れで処理を作ります。
- モンスターをゲットしたら
- 経験値を100足す
- もし、経験値が現在のレベル*1000 ならば、
- レベルアップメッセージを表示
- 経験値を0にする
- レベルを1足す
- メッセージを隠す
それでは実際にプログラムを組んでいきましょう。まずは、メッセージを表示するためのスプライトを作ります。
ここまで記事を見ていただいている方は、スプライトの作り方はすでにご存知かと思いますので詳細は省略しますが、ここではテキストメッセージでLevel up と書いて、四角で囲んだものを作っています。
次に、データを作ります。経験値を意味する XP (Experimental Point) と Level です。データを作るというボタンを押していただければすぐに作れるはずです。
そして、先ほど作った level up のスプライトに対してプログラムを追加します。図の左側のプログラムが level up スプライトのプログラムです。緑のはたの部分では初期化として、メッセージを隠す、level を1にする、XPを0にするという処理を入れています。そして、XPを取得というメッセージを受け取ったときに先ほど書いた方針でつくったプログラムを入れています。ここで少しアレンジとして、メッセージを x:0, y:100の位置から、x:0, y:0の中心に1秒で移動させる処理を入れました。上からすっと降りてくるような動きをします。また、音でcheer (喝采する音)をいれて雰囲気を盛り上げました。この「XPを取得」というメッセージは、モンスターボールでゲットした後に出てくるメッセージが終わったあとに、メッセージを送るようにしています。(図の右)
実際にやってみていただければ、経験値1000になったときにレベルアップしてくれるはずです。
ステップ6:モンスターボールの数を決める
随分ゲームらしくなってきましたが、もうすこしゲーム要素を加えていきます。もとの Pokemon Go とは違った味付けですが、モンスターボールの数を決めて、モンスターボールが0になった時点でゲームオーバーとしてみたいと思います。レベルが上ったときにはモンスターボールが補充されるようにします。モンスターボールのプログラムに対して次のような処理を加えます。
- モンスターボールがクリックされたとき
- もし モンスターボールが0個ならば
- ゲームオーバー
- そうでなければ、
- モンスターボールを1減らす
- ボールを飛ばすアニメーションをして、モンスターに当たればゲット
- もし モンスターボールが0個ならば
この処理を反映させたプログラムが図のとおりとなります。Monster Ball は、データで変数をつくります。
そして、レベルが上った時にはモンスターボールを補充します。補充するときの式は、次のようにしました。
Monster Ball = 今のMonster Ball + (レベル * 10)+ 10
また、初期化のときに、最初のモンスターボールの数を決めます。ここでは、30個としました。特にこうしなければならないというのはないので、ゲームバランスなどを考えてご自分で決めていただければと思います。ただし、10個以下になるとレベルが上がらないので必ずゲームオーバーになります。
ステップ7:ゲームオーバーをつくる
最後にボールが無くなった時点でゲームオーバーになる時の処理を作ります。これは、先ほどのレベルアップの処理とほとんど同じになるので詳しい説明は書きませんが、図の左のように Game Over のメッセージを新しいスプライトで作成します。そして、ゲームオーバーのメッセージを受け取ったときに、上から落ちてくる処理をいれて、表示しました。最後に、ドラの音を鳴らして終了です。
まとめ
3回にわたってスクラッチGoというゲームづくりを記事で紹介してきました。自分でアニメーションを作る場合の方法など参考にしていただければ幸いです。また、違う内容で記事にしたいと思いますので、お楽しみに。
東京都文京区小石川で小学生、中学生、高校生を対象としたプログラミング&ロボット教室を開校しています。コース概要のページで説明しております。創造性や協調性などこれからの時代に必要となる素養を育てるコースです。ご興味ありましたらぜひお問い合わせください。