URLをコピーしました!
スキルアップを始める!

【Scratch(スクラッチ)入門】#18ゲームのクリア条件(ステージクリア)を追加してみる

Scratch(スクラッチ)
\ワードプレスのスキルアップはこちら!/ WordPress入門読本

前回までのあらすじ

落ちる穴を(ちょっと力技だったが)追加できました!

ゲームのクリア条件(ステージクリア)

今のままだと、このゲームにはステージクリアが無いので、ひたすらゲームオーバーまで逃げまどう(?)ゲームになってしまいます。

なんらかの条件でゲームクリアとなる条件を作ってみたいと思います。

例えば「敵キャラクターを20体倒した」など

敵キャラクターを20体倒せば、ゲームクリアとしてみたいと思います。

まずは変数を作って、最初に0に初期化しておきます。

「敵キャラクターを○体倒した」をどうやって・・・

スクラッチで変数などの値を画面に表示させるのは、この「変数などの値を表示させる」方法か・・・

「○○と言う」と表示させる方法です。ここに変数を入れれば「0,1,2…」と表示されます(数字だけだとなんのことか分かりませんが…汗)

敵を倒した数

[rml_read_more]

敵を倒した数は、スプライトを作って、表示させれば良いかと思います。

数字の部分の色を変えたい、など気になりますが、ひとまずこのままで。

制限時間を作る

このままだと簡単にクリアできてしまうので、制限時間を設けてみます。

スプライトをバラバラに作ろうと思いましたが、「あれ?操作方法と一緒のスプライトにまとめた方が簡単では?」ということで、まとめてみます。

できました!

残り時間タイマーを表示

あとは残り時間を表示させますが、この時に「残り時間を-1ずつ変える」みたいにシンプルにしてしまうと、一気にマイナスされて、無限に減り続けます。

残り時間を(残り時間 – タイマー)にする

このパターンを作ってしまいましたが、これでも同じです。無限に減り続けます。

残り時間を(30 – タイマー)にする

これが正解パターンかと思います!この30という値も変わる可能性があるので、別の変数として持たせた方が良いと思いますが、今回は固定値で。

タイマーを直接使うと、小数点以下3まで表示されて落ち着きがない感じがするので、別の変数を使って引いていく方法の方が良いかもしれません。

このあたりは、おいおい調整を。

0秒未満になったらゲームオーバー

とすると良いかと思います。0秒未満になったタイミングで一度0あたりに変えてあげないと、無限ループに入ってしまうので注意です。

ほぼ、良い感じになったかと思います。

あとは、敵を20体倒したらゲームクリアを設定したいと思います。

ステージクリア!のメッセージを送る

今までやってきたメッセージと同様に、ステージクリアした時にメッセージを送るようにしてみます。

今までの変数を使いまわしてどうにかしようとすると、クリアの直後にゲームオーバーが出たりと不具合(?)を起こすので、新たに変数を追加します。

ゲームオーバーと同様にゲームクリアした時は変数の値を変えてループを抜け出すようにします。

変数が変わった時の条件に注意

変数が新しく増えたので、処理を気を付けないと、ゲームクリアした途端に敵だけが残って動き続けるなど、謎の動作が発生してしまいます。

ゲームクリアとゲームオーバーが同時に起こらないように

何度かテストをしていると、「ゲームクリアとゲームオーバーが同時に起こる」パターンが発生しました。

敵を倒したと同時に、敵にやられた場合は、ゲームクリアとするか、ゲームオーバーとするか・・・?

これ、けっこう難しいような・・・気がします。

攻撃を放って、敵に当たった→ゲームクリア。だが、その攻撃が当たった時に、自分も敵に当たってゲームオーバー・・・の時は?コンマ単位で注意が要りそうな気がします。

このあたりは、微調整が必要かと思われます。
※この場合はゲームオーバーになりそうな気がしますが。

完成版はこちら

だんだんとゲームらしくなってきたので、そろそろ最終回を・・・?!

※音量をONにすると音がなりますので注意!

Kindle Unlimited 会員は無料で購読できます
購読はこちら
Kindle Unlimited 会員は無料で購読できます
購読はこちら