前回までのあらすじ
落ちる穴を(ちょっと力技だったが)追加できました!
ゲームのクリア条件(ステージクリア)
今のままだと、このゲームにはステージクリアが無いので、ひたすらゲームオーバーまで逃げまどう(?)ゲームになってしまいます。
なんらかの条件でゲームクリアとなる条件を作ってみたいと思います。
例えば「敵キャラクターを20体倒した」など
敵キャラクターを20体倒せば、ゲームクリアとしてみたいと思います。
まずは変数を作って、最初に0に初期化しておきます。
「敵キャラクターを○体倒した」をどうやって・・・
スクラッチで変数などの値を画面に表示させるのは、この「変数などの値を表示させる」方法か・・・
「○○と言う」と表示させる方法です。ここに変数を入れれば「0,1,2…」と表示されます(数字だけだとなんのことか分かりませんが…汗)
敵を倒した数
[rml_read_more]
敵を倒した数は、スプライトを作って、表示させれば良いかと思います。
数字の部分の色を変えたい、など気になりますが、ひとまずこのままで。
制限時間を作る
このままだと簡単にクリアできてしまうので、制限時間を設けてみます。
スプライトをバラバラに作ろうと思いましたが、「あれ?操作方法と一緒のスプライトにまとめた方が簡単では?」ということで、まとめてみます。
できました!
残り時間タイマーを表示
あとは残り時間を表示させますが、この時に「残り時間を-1ずつ変える」みたいにシンプルにしてしまうと、一気にマイナスされて、無限に減り続けます。
残り時間を(残り時間 – タイマー)にする
このパターンを作ってしまいましたが、これでも同じです。無限に減り続けます。
残り時間を(30 – タイマー)にする
これが正解パターンかと思います!この30という値も変わる可能性があるので、別の変数として持たせた方が良いと思いますが、今回は固定値で。
タイマーを直接使うと、小数点以下3まで表示されて落ち着きがない感じがするので、別の変数を使って引いていく方法の方が良いかもしれません。
このあたりは、おいおい調整を。
0秒未満になったらゲームオーバー
とすると良いかと思います。0秒未満になったタイミングで一度0あたりに変えてあげないと、無限ループに入ってしまうので注意です。
ほぼ、良い感じになったかと思います。
あとは、敵を20体倒したらゲームクリアを設定したいと思います。
ステージクリア!のメッセージを送る
今までやってきたメッセージと同様に、ステージクリアした時にメッセージを送るようにしてみます。
今までの変数を使いまわしてどうにかしようとすると、クリアの直後にゲームオーバーが出たりと不具合(?)を起こすので、新たに変数を追加します。
ゲームオーバーと同様にゲームクリアした時は変数の値を変えてループを抜け出すようにします。
変数が変わった時の条件に注意
変数が新しく増えたので、処理を気を付けないと、ゲームクリアした途端に敵だけが残って動き続けるなど、謎の動作が発生してしまいます。
ゲームクリアとゲームオーバーが同時に起こらないように
何度かテストをしていると、「ゲームクリアとゲームオーバーが同時に起こる」パターンが発生しました。
敵を倒したと同時に、敵にやられた場合は、ゲームクリアとするか、ゲームオーバーとするか・・・?
これ、けっこう難しいような・・・気がします。
攻撃を放って、敵に当たった→ゲームクリア。だが、その攻撃が当たった時に、自分も敵に当たってゲームオーバー・・・の時は?コンマ単位で注意が要りそうな気がします。
このあたりは、微調整が必要かと思われます。
※この場合はゲームオーバーになりそうな気がしますが。
完成版はこちら
だんだんとゲームらしくなってきたので、そろそろ最終回を・・・?!
※音量をONにすると音がなりますので注意!