【Scratch入門〜中級編】スクリプトを止め方色々〜止め方を理解してゲームの中断・終了を理解する


※ 当ページには【広告/PR】を含む場合があります。
2020/10/14
2022/08/22
【Scratch入門〜中級編】少しだけ難しいスプライトのクローンの高度な利用法



Scratchのプログラミングでゲームを作る際には、ブロック内のスクリプトの止め方を工夫することで、色々なステージを切り替えられたり、スプライトの動きを止めたり再開したりすることができます。
今回は
制御 のブロックの中の何通りかあるスクリプトの止め方を深堀していきます。

合同会社タコスキングダム|蛸壺の技術ブログ

合同会社タコスキングダム|蛸壺の技術ブログ【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

待つ系の処理

〇〇まで待つ



ゲームの途中で、スプライトや背景の動きを中断・再開を行いたい場合に使うことができます。
以前の記事で作った
タコの泳ぐだけのプログラム の中身に、スペースキーが押された時まで待つように、下の図のようにループ内にブロックをおくと、

合同会社タコスキングダム|蛸壺の技術ブログ


スペースを押すごとに、たこが1回動くようになります。
またスペースを押しっぱなしにすると、たこはずっと動き続けます。

〇〇まで繰り返す



では下の図のように先ほどの
〇〇まで待つ の箇所を単純に 〇〇まで繰り返す で置き換えてみてみると、

合同会社タコスキングダム|蛸壺の技術ブログ


今度はスペースを押さない限りたこのスプライトは動き続けます。 スペースを押しっぱなしにしたときにだけ、たこの動きを止めることが出来ます。
スペースキーが押された続けた時に
スペースキーが押された ブロックは真(true)になり、その真になったときに 〇〇まで繰り返す の中身の処理が止まります。
ゲームの中断中に別の処理を行いたい場合には、こちらのブロックのほうが便利です。
先ほどの
〇〇まで待つ〇〇まで繰り返す は処理の働きとしては、真逆の関係にあります。

ここに置いたでもプログラム 切り替わっていることを確認できます。

合同会社タコスキングダム|蛸壺の技術ブログ

使い分けのポイント



特定の条件を満たしている間は動かしたい(処理させたい)場合には、
〇〇まで繰り返す ブロックを使います。
逆に特定の条件になっている間は、動かしたくない(処理させたくない)場合には、
〇〇まで待つ ブロックの方でコーディングします。


合同会社タコスキングダム|蛸壺の技術ブログ【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ

止める系の処理

このスクリプトを止める



このブロックは、スプライトや背景一つ一つの単位で走っているスクリプトを止める場合に使用します。

このスクリプトを止める ブロックで止まるのは、このブロックが呼び出されたスプライト、クローン、背景の一つのスクリプトに限定されるので、他のスクリプトはそのままずっと動いている状態になります。

止める 系で止められたスクリプトは、その時点で処理が完了してしまうので、再開することはできなくなります。
要らなくなった処理をいつまでも残しておくと、メモリを無駄にしてしまうだけですので、容量の大きなゲームになってくるほど、
このスクリプトを止める ブロックを正しく使って止めてしまうことが重要です。
まず簡単な例をやってみます。
先ほどのスペースキーでオリジナルのスプライトとクローンの動きが切り替わるプログラムをほんのちょっとだけ変えてみます。

サンプルプログラムはここ にあります。

合同会社タコスキングダム|蛸壺の技術ブログ


スペースキーを押すと、オリジナルのスプライトに
このスクリプトを止める ブロックが作用して、このスプライトの処理が止まってしまいます。
一方でクローンの処理には影響せずに動き続けることができます。


すべてを止める



文字通りすべてのスプライト・背景で走っているプログラムがすべて終了します。
この
すべてを止める ブロックの使い道は、ほぼゲームオーバー時などのゲームのリセットに限られると思います。
このブロックの機能としては特に説明するほどのものでは無いのですが、先ほどのサンプルプログラムをさらに修正して最後に
すべてを止める ブロックを使えるようにしてみます。
この
サンプルプログラムはここ です。

合同会社タコスキングダム|蛸壺の技術ブログ


先ほどまでのサンプルプログラムよりも一気に複雑にしています。
まずクローンを4つに増やして、
クローンの識別番号をつけるテクニック を利用し、それぞれのクローンをコントロールできるようにしています。

合同会社タコスキングダム|蛸壺の技術ブログ
【Scratch入門〜中級編】少しだけ難しいスプライトのクローンの高度な利用法

Scratchの中級者向けのテクニックとして、クローンの特殊な使い方を解説します。



また、今回はスペースキーを押す度に、
オリジナルのたこを止める -> クローン1を止める -> クローン2を止める -> クローン3を止める -> クローン4が消えたらすべて止める という処理が変化の流れになっています(下の図のイメージ)。

合同会社タコスキングダム|蛸壺の技術ブログ


どのたこのスクリプトを止めるかは、グローバル変数
つぎにとめる の番号をスペースキーが押される度にカウントアップさせ、クローンの持つ識別番号であるローカル変数 ばんごう_ と一致したときに実行するようにしています。
ちなみに、
スペースキーを離した タイミングを取得するテクニックは こちらの方の記事 を参考にしました。
実際にはこのテクニックと共に、スペースキーを押した・離したをトリガー(ON/OFF)として利用するためには、グローバル変数
キーおされた でスペースキーの状態を記憶しておく必要があります。


スプライトの他のスクリプトを止める



最後に一番使いどころがなさそうな
スプライトの他のスクリプトを止める を説明しましょう。 多分このブロックが一番分かりにくいかもしれません。
同じスプライト内で走っているスクリプトの中で、その
スプライトの他のスクリプトを止める が仕込まれているプロック以外のスクリプトが止まり、自分だけが実行され続けます。 またこのとき、別のスプライトや背景のプログラムには影響が無いので、そちらも走り続けます。
このブロックの使いどころとしては、画面が切り変わったり、新しいゲームステージに遷移したりするときに、それ以前に走っていて不要になった古い処理をすべて捨て去ることができます。
先ほどのサンプルプログラムに再度、画面を遷移させる機能を追加してみます。
仕上がったサンプルプログラムはこちら です。 このデモサンプルも下に貼っておきます。



先ほどのサンプルプログラムからのプログラミングの変更点としては、たこのスプライト側でゲームが終了したフラグ(ここでは
つぎにとめる=5 )を満たした際に、 ゲームオーバー のイベントを発生させ、背景のプログラミングブロック側がそのイベントを受け取った際に、 スプライトの他のスクリプトを止める ブロックを呼び出て、それ以前に走っていた古いプログラムを全て止めています。

合同会社タコスキングダム|蛸壺の技術ブログ


複雑な画面遷移を行うゲームを作成したい場合には、この
スプライトの他のスクリプトを止める ブロックを上手


合同会社タコスキングダム|蛸壺の技術ブログ【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ

まとめ



今回はスプライトの止め方のバリエーションをまとめて解説しました。
スクリプトの止め方一つとってもそれぞれ性質に違いがあり、Scratchでより複雑なゲームを作成したい場合には、それぞれの止め方の特性を良く理解してからプログラミングに取り掛かかるのが良いと思います。