前回までのあらすじ
「ゲームクリア!」を追加しました。
ゲームの難易度を追加する
自分で遊んでいて思いましたが、このゲーム、けっこう難しい・・・!
ということで、「イージー」「ノーマル」「ハード」みたいな選択を、ゲームのオープニングに追加してみたいと思います
何をもって「難易度」とするか・・・?
ふと考えてみると、なにを難易度とするか?を最初に考える必要があるかと思います。
- 制限時間
- 敵を倒す数
- 敵の出現する数
- 敵のスピード
- 主人公の攻撃できる回数の間隔
- 主人公の移動スピード
- 主人公のジャンプ力
他にもありそうな気がしますが、こんな感じかな?と思います。
難易度選択用のスプライトを作成
難易度ごとにスプライトを作成してもよかったのですが、処理がすこぶる面倒になりそうな気がしたので、ひとつのスプライトで使い分ける方法を選択してみます。
スプライトのコスチュームが切り替わることで、難易度選択が切り替わっているように・・・見える。
あとは、この状態に合わせて難易度を変えていきます。
基本的には、前にやった「ゲームスタート」の左下のお知らせが表示される動作と、同じような感じですので、バックパックを使って複製をしておきます。
後は、不要な部分は削除して、必要な部分だけ抜き取って利用すればOKです。
「前のコスチュームにする」が無い・・・?
もし「下向き矢印キーが押された」なら「次のコスチュームにする」で良いかと思いましたが・・・
[rml_read_more]
このままだと、上矢印キーを押した時に、上に戻ることができず一方通行です。それでもいいのですが、上矢印キーを押した時は、「ハード」→「ノーマル」→「イージー」と戻りたいところです。
「前のコスチュームにする」があれば一発で解決だったのですが・・・
「次のコスチュームにする」はありますが「前のコスチュームにする」がありませんでした。うーん、・・・残念。
下向き矢印キーが押された時は「次のコスチューム」でよいのですが、上矢印キーが押された時は、コスチュームの順番を逆にしてあげる必要があります。
もし~ならに気をつける
ここではまってしまったのが、最初の頃にもはまってしまった、もし~の連発です。この場合、ひとつめないしふたつめの「もし~なら」でコスチュームの番号を変えた途端に、次の「もし~なら」に入れなくなる場合が出てくるので気をつける必要があります。
一見良さそうに見えますが、特定の場合に、前の条件分岐で切り替えてしまうことで、次の条件分岐に入れなくなります。
例えばこの場合、「イージー」から「ハード」なったら、そのまま次の「ノーマル」に入ってしまうので、永遠に「ハード」になることはできません。
スクラッチにswitch文のような方法があればいいのに…と思いつつ、方法を考えてみます。
難易度変数を作成
こんな時は、やはり変数を使う、という方法がよいかなと思います。
変数で調整する
初期値:難易度変数=1
上向き矢印キーを押した時に、「ハード」から「ノーマル」に切り替えた時に「難易度切り替え変数を1にする」として、下の条件を「ノーマル」かつ「難易度切り替え=2なら」とすれば、条件に当てはまらないので条件分岐を抜けることができます。
その後、「難易度切り替え変数=2」に切り替えてあげることで、上向き矢印を押した時にコスチュームを逆に遡るという動作を実現できます。(もっといい方法があれば・・・!!)
あとは、例えば「難易度決定変数」のようなものを準備して、その状態に合わせて、何かの難易度を変えてあげれば良いということになるかと思います(下向き矢印キーが押された時も同じ用に設定してみます)。
【難易度決定変数】
イージーモード・・・1
ノーマルモード・・・2
ハードモード・・・3
これで、ほぼ完成です。もう少しスッキリまとめたいところですが・・・すすみます。
「難易度決定変数」に応じて、各々の値を調整
あとは、「難易度決定変数」に応じて主人公の値やゲームクリアの条件やらを変えてあげればOKということになります。
例えば、横から飛び出してくる敵の頻度を変える
例えば、
ノーマルモード・・・横からも敵が飛び出してくる。
ハードモード・・・横から飛び出してくる敵の数が多い。
など。