エグウェブ.JP@オンライン/WEB講座・セミナー・WEB分析

WEB分析・ホームページ・WEBサイト作成・WordPress、Googleアナリティクス、LINEスタンプ、Photshop・illustrator、Excelの講座やオンラインセミナーを開催中!

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

time 2020/05/02

前回までのあらすじ

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

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

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

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

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

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

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

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

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

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

敵を倒した数

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

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

制限時間を作る

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

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

できました!

残り時間タイマーを表示

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

完成版はこちら

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

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

download(ダウンロード)

プロフィール

EGUWEB

EGUWEB

【皆さまの人生に最良のファーストステップを】WEBサイトを作りたい!WEB分析を学びたいけど分からない。とりあえず色々と知りたい!皆様の悩みを解決できるように頑張ります。 [詳細]

カテゴリー