でんでんジャンプを作ろう(完)

 

前回の でんでんジャンプを作ろう 2 のつづきです。

完結まであと少しです。がんばりましょう。

ゲームは大まかに、企画・グラフィック・サウンド・プログラムの4つの要素で構成されています。これらをすべて一人で作るのは大変ですが、一人だからこそ味わえる楽しさもあります。
いつか誰かとコラボレーションしてみるのも、刺激があって楽しいものですよ。
ぜひ挑戦してみてください。

 

ゲームを改良しよう

ゲームとしての基本的な形はできあがりました。
ヘビを避けながらリンゴを取る、シンプルなゲームとして遊ぶことができます。
ここからは、少し手を加えて改良していきましょう。

まずは、ゲーム開始時に残りライフ数を表示するようにします。
これは、プレイヤーにあらかじめ伝えておくべき重要な情報だからです。
やられて初めて「ライフは3つなんだ」と気づくような設計は、あまり親切とは言えません。

情報 から ライフを3にする を 持ってきて 最初だけ の中に入れます。

ライフを3にするを使う

 

次は、プレイヤーが好きなタイミングでゲームを開始できるようにしましょう。
ゲーム開始直後に操作しないと失敗してしまうような内容であれば、この仕組みはなるべく取り入れるべきです。

ゲーム から タイトル○を表示する を持ってきます。

タイトル○を表示するを使う

 

最初だけ の中に入れて ヘビよけてリンゴをとれ に変更します。

タイトルの表示を行う

 

開始前にメッセージが表示されるようになりました。
A ボタンを押すことでゲームが始まります。
本来はタイトルを表示するための機能ですが、このような使い方もOKです。

タイトルでウエイトさせる

 

ゲームを難しくしよう

実際にゲームを遊んでみると、少し簡単すぎて「つまらない」と感じるかもしれません。
その主な原因の一つは、ヘビを避けることだけに集中していれば、ゲームオーバーにならずに済んでしまう点です。
これを解決する方法としては、たとえばヘビの動きを複雑にする、あるいはヘビ以外の敵キャラを登場させるといった工夫が考えられます。
ただし、今回はプログラムを複雑にしたくないので、「リンゴを取り損ねるとライフが減る」という仕様を追加することにします。

 

リンゴを取り損ねたことを判定するために、「スプライトが破棄されたかどうか」を調べるブロックを使用します。
リンゴは発射体として作られているため、画面の外へ出ようとすると自動的に破棄される仕組みになっています。

スプライト から下図のブロックを持ってきます。

スプライト破棄のイベントを調べる

 

リンゴのタイプは Food です。
Player から Food に変更します。

PlayerからFoodに変更する

 

Food(リンゴ)が破棄されたときの演出も入れます。
スプライト から mySpriteにエフェクトスプレーをかける を持ってきます。
sprite にエフェクト崩壊を かける 300 ミリ秒間 に変更します。

スプライトに崩壊演出を入れる

 

情報 から ライフを-1だけ増やす を追加します。

ライフを1減らす

 

テストしてみましょう。
…おっと、バグが発生しました。リンゴを取ったときにライフが減ってしまいました。
これは、リンゴを取ったときと落としたときどちらもスプライトを破棄していることが原因です。

このバグを回避するため、リンゴを取った際にスプライトのタイプを変更するようにしましょう。
スプライト から mySpriteをPlayerタイプにする を持ってきます。

mySpriteをPlayerタイプにする

 

Player と Food の当たり判定の中に入れます。
mySprite を otherSprite に変更します。

otherSpriteをPlayerタイプにする

 

新しいタイプを作ります。
メニューを開いて 新しいkindを追加 をクリックします。

新しいkindを追加する

 

新しく noFood というタイプを作ります。

noFoodタイプを作る

 

これでプレイヤーがリンゴを取ったとき、Food から noFood に切り替わります。

noFood のタイプに切り替わる

 

テストしましょう。
リンゴを取ったときライフは減らなくなりました。

 

もう少し難しくしよう

少し遊んでみると、操作に慣れてしまい、まだ少し簡単すぎるように感じます。
プレイヤーが余裕を持って行動できる、つまり状況をしっかり把握できることが、簡単に感じる理由かもしれません。

リンゴの発生間隔を短くしてみます。
2000 から 1400 ミリ秒毎に変更します。

1400ミリ秒毎に変更する

 

どうでしょうか、難しすぎますか?
私はこれくらいがいいかなと思います。
ゲーム難易度は遊んでもらいたい人に合わせて調整することがポイントです。

 

サウンドを入れよう

最後にサウンドを入れていきます。

音楽 から play sound ピコーン until done を持ってきます。

サウンドを入れる

 

プレイヤーがリンゴを取ったときの効果音を入れます。
再生方法は バックグランドで に変更します。

リンゴを取ったときの効果音

 

つぎはジャンプしたとき、つまり A ボタンを押したときの中に入れます。
sound バンバン それから バックグランドで に変更します。

ジャンプの効果音を入れる

 

プレイヤーがヘビに当たったときと、リンゴを取り損ねたときに効果音を入れます。
sound zapped それから バックグランドで に変更します。

やられ効果音を入れる

 

テストしましょう。
自分の好きなサウンドを選んでも楽しいですよ。

 

やられ演出を入れよう

ヘビに当たったときと、リンゴを取り損ねたときライフを失います。
いまはライフが減るだけなので、やられた感はないですね。
そこで画面を揺らしたいと思います。

シーン から カメラを4ピクセルで500ミリ秒間揺らす を持ってきます。

カメラを揺らすを使う

 

Player と Enemy(ヘビ) の当たり判定と、Food(リンゴ)が破棄されたときの中に入れます。

ヘビとの当たり判定とリンゴ破棄の中に入れる

 

テストしてみましょう。
それぞれのタイミングで、画面が揺れているかを確認します。
ただし、揺れるのはスプライトとタイルマップの画像だけです。
背景は揺れないため、将来ほかのゲームを作る際、画面上のスプライトが少ないと揺れているかどうか分かりにくくなる場合があります。注意しましょう。

 

関数にしよう

これでゲームは完成です。
新しいテクニックを覚えたことで、作れるゲームのジャンルの幅も広がったのではないでしょうか。

ここで、もう一つ覚えておいてほしいことがあります。
それは「関数」の使い方です。
ここでいう関数(かんすう)とは、命令ブロックをひとまとめにして、何度も使いやすくする仕組みのことです。

高度なブロック を開き f(x) 関数 をクリックしてください。

高度なブロックの関数を開く

 

関数を作成する をクリックします。

関数を作成するをクリック

 

ヘビに当たったときやリンゴを取り損ねたときの処理がほぼ同じなので、これを関数にしたいと思います。
関数名を やられ処理 に変更して「完了」をクリックします。

関数名をやられ処理にする

 

ヘビとの当たり判定とリンゴの破棄イベントの近くに配置します。

ヘビとの当たり判定とリンゴ破棄処理の近くに置く

 

効果音の再生とカメラの揺らし、ライフ−1を関数の中に移動します。
移動しなかった片方の処理はゴミ箱へ捨てましょう。
これで やられ処理 という関数ができました。

やられ処理を関数の中に移動する

 

関数は呼び出すことで使えます。
関数 から 呼び出し やられ処理 を持ってきます。

呼び出しやられ処理を使う

 

当たり判定と破棄イベントの両方に 呼び出し やられ処理 を入れます。

関数やられ処理を当たり判定と破棄イベントに入れる

 

テストしてみましょう。
関数を使っても、動作は関数を使う前とまったく同じです。

今回の例では、関数を使うメリットが少しわかりにくいかもしれません。
ですが、もしプレイヤーがやられるパターンが10個あったとしたらどうでしょう?
それぞれに「やられ処理」を毎回作るより、関数としてまとめておいて必要なときに呼び出す方がずっと簡単です。

実は関数には、もっと便利な使い方がたくさんあります。
プログラミングの世界では「関数を使うのが当たり前」と言われるほど、よく使われている機能です。
また別の機会に、くわしく説明したいと思います。

 

MakeCode Arcade

  1. MakeCodeはいかが
  2. りんご狩りゲーム
  3. りんご狩りゲーム(完)
  4. ピザを避けてゲーム
  5. ピザを避けて 2
  6. ピザを避けて(完)
  7. アカウント登録
  8. ケーキ早食いゲーム
  9. ケーキ早食い 2
  10. ケーキ早食い(完)
  11. 危険ドライブ
  12. 危険ドライブ 2
  13. 危険ドライブ(完)
  14. 15秒シューティング
  15. 15秒Shooting 2
  16. 15秒Shooting(完)
  17. ブロック崩し
  18. ブロック崩し 2
  19. ブロック崩し(完)
  20. ヘビキングを撃て
  21. ヘビキング(完)
  22. ちょびっと迷路
  23. ちょびっと迷路 2
  24. ちょびっと迷路(完)
  25. でんでんジャンプ
  26. でんでんJump 2
  27. でんでんJump(完)
  28. ミニダンジョン
  29. ミニダンジョン 2
  30. ミニダンジョン 3
  31. ミニダンジョン 4
  32. ミニダンジョン(完)