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


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

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

今回は
制御のブロックの中の何通りかあるスクリプトの止め方を深堀していきます。

合同会社タコスキングダム|タコキンのPスクール


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

待つ系の処理

〇〇まで待つ

ゲームの途中で、スプライトや背景の動きを中断・再開を行いたい場合に使うことができます。

以前の記事で作った
タコの泳ぐだけのプログラムの中身に、スペースキーが押された時まで待つように、下の図のようにループ内にブロックをおくと、

合同会社タコスキングダム|タコキンのPスクール

スペースを押すごとに、たこが1回動くようになります。

またスペースを押しっぱなしにすると、たこはずっと動き続けます。

〇〇まで繰り返す

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

合同会社タコスキングダム|タコキンのPスクール

今度はスペースを押さない限りたこのスプライトは動き続けます。スペースを押しっぱなしにしたときにだけ、たこの動きを止めることが出来ます。

スペースキーが押された続けた時に
スペースキーが押されたブロックは真(true)になり、その真になったときに〇〇まで繰り返すの中身の処理が止まります。

ゲームの中断中に別の処理を行いたい場合には、こちらのブロックのほうが便利です。

先ほどの
〇〇まで待つ〇〇まで繰り返すは処理の働きとしては、真逆の関係にあります。

ここに置いたでもプログラムでは、以下の図のように〇〇まで繰り返すブロックを組み込んだオリジナルのスプライトと、〇〇まで待つを組み込んだクローンの動きが、スペースキーを押すごとに(もしくは押しっぱなしにして)切り替わっていることを確認できます。

合同会社タコスキングダム|タコキンのPスクール

使い分けのポイント

特定の条件を満たしている間は動かしたい(処理させたい)場合には、
〇〇まで繰り返すブロックを使います。

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


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ

止める系の処理

このスクリプトを止める

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

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

止める系で止められたスクリプトは、その時点で処理が完了してしまうので、再開することはできなくなります。

要らなくなった処理をいつまでも残しておくと、メモリを無駄にしてしまうだけですので、容量の大きなゲームになってくるほど、
このスクリプトを止めるブロックを正しく使って止めてしまうことが重要です。

まず簡単な例をやってみます。

先ほどのスペースキーでオリジナルのスプライトとクローンの動きが切り替わるプログラムをほんのちょっとだけ変えてみます。

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

合同会社タコスキングダム|タコキンのPスクール

スペースキーを押すと、オリジナルのスプライトに
このスクリプトを止めるブロックが作用して、このスプライトの処理が止まってしまいます。

一方でクローンの処理には影響せずに動き続けることができます。

すべてを止める

文字通りすべてのスプライト・背景で走っているプログラムがすべて終了します。

この
すべてを止めるブロックの使い道は、ほぼゲームオーバー時などのゲームのリセットに限られると思います。

このブロックの機能としては特に説明するほどのものでは無いのですが、先ほどのサンプルプログラムをさらに修正して最後に
すべてを止めるブロックを使えるようにしてみます。

この
サンプルプログラムはここです。

合同会社タコスキングダム|タコキンのPスクール

先ほどまでのサンプルプログラムよりも一気に複雑にしています。

まずクローンを4つに増やして、
クローンの識別番号をつけるテクニック(詳細については以前紹介した記事を参照)を利用し、それぞれのクローンをコントロールできるようにしています。

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

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

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

合同会社タコスキングダム|タコキンのPスクール

どのたこのスクリプトを止めるかは、グローバル変数
つぎにとめるの番号をスペースキーが押される度にカウントアップさせ、クローンの持つ識別番号であるローカル変数ばんごう_と一致したときに実行するようにしています。

ちなみに、
スペースキーを離したタイミングを取得するテクニックはこちらの方の記事を参考にしました。

実際にはこのテクニックと共に、スペースキーを押した・離したをトリガー(ON/OFF)として利用するためには、グローバル変数
キーおされたでスペースキーの状態を記憶しておく必要があります。

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

最後に一番使いどころがなさそうな
スプライトの他のスクリプトを止めるを説明しましょう。多分このブロックが一番分かりにくいかもしれません。

同じスプライト内で走っているスクリプトの中で、その
スプライトの他のスクリプトを止めるが仕込まれているプロック以外のスクリプトが止まり、自分だけが実行され続けます。またこのとき、別のスプライトや背景のプログラムには影響が無いので、そちらも走り続けます。

このブロックの使いどころとしては、画面が切り変わったり、新しいゲームステージに遷移したりするときに、それ以前に走っていて不要になった古い処理をすべて捨て去ることができます。

先ほどのサンプルプログラムに再度、画面を遷移させる機能を追加してみます。
仕上がったサンプルプログラムはこちらです。このデモサンプルも下に貼っておきます。

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

合同会社タコスキングダム|タコキンのPスクール

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


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ

まとめ

今回はスプライトの止め方のバリエーションをまとめて解説しました。

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