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