※ 当ページには【広告/PR】を含む場合があります。
2020/09/07
【Scratch入門】リストの『挿入』・『削除』をじっくり理解する
【Scratch入門】リミックスのやり方〜気になるプログラムからScratchを自習する方法
本ブログ記事の内容では、クローンを使ったスコア表示のプログラムの中で、スプライトのクローンを利用しました。たくさんのスプライトを動かすアクションゲームなどを作成したい場合、敵や障害物、アイテムなどを効率よく出現させるためにはクローンの使い方に慣れておく必要があります。ただし、クローンはScratchのプログラミングの中でも、一番分かりにくい機能のひとつであり、取り扱いには注意が必要です。この記事では、クローンの基本的な使い方とプログラミングする上での注意点を特集します。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
材料の下準備
今回はデフォルトの猫のスプライト・スプライト1
に、以下のように4つのコスチュームを追加して、名前を1,2,3,4
にしておきます。
【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ
単純なクローン
まずは、単純なクローンを1回だけやってみましょう。下の図のようなプログラミングブロックを組んで、🚩
ボタンを押すと、猫のスプライトのクローンが作成されます。ただし、この場合、おなじ座標に複製されるため、クローンを確認するにはマウスで掴んでドラッグすると重なっているのが確認できます。ここで注目すべきは、画像の描画される順序です。デフォルトでは、クローンはスプライトの裏側に複製されていると思います。次に、クローンを元のスプライトとは離して作成してみます。クローンだけを移動したい場合、特別なイベントであるクローンされたとき
イベントを利用します。このクローンされたとき
ブロックを使う場合の注意点として、その時に複製されるひとつのクローンだけに影響を与えるブロックです。つまり、対象のクローン以外の他のスプライトやクローン、背景などの値を変えたい場合には、このクローンされたとき
ブロックに入れてはいけません。例えば、元のスプライトを2番目のコスチュームして複製したい場合を考えると、以下のようなプログラミングブロックでは、クローンされたとき
ブロックにコスチュームを変えるブロックを入れてしまったために、クローンだけのコスチュームが変わってしまいます。この場合、元のスプライトを変えたい場合には、スクリプト全体に影響を与えるブロックへ入れる必要があります。また複製のタイミングにも注意が必要です。クローンは元のスプライトの状態をそのままコピーするので、この例でいうと、クローンを作成してから元のスプライトのコスチュームを変えてしまっているので、クローンのコスチュームは更新されず古いコスチュームのままになってしまいます。以上のことから、クローンを使う際には、クローンされたとき
イベントの中身と、クローンするブロックを入れる順番に注意を払う必要があります。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
クローンとローカル変数の組み合わせ
ちょっとだけクローンの数を増やして使ってみます。変数を使ってクローンの横への移動量をコントロールするために、今回はヨコ_
というローカル変数を追加します。まずは上手くいかない例からやってみましょう。下のプログラムは4回分のクローンを生成して、そのたびに横方向に+100ずつ複製が移動するように見えるのですが、結果は、クローンたちがおなじ座標になって団子の状態で表示されてしまいます。なぜクローンが移動しなかったのというと、先程も触れたように、クローンされたとき
イベントブロックはそのときクローンされたスプライトだけに影響を与える特別なブロックですので、ローカル変数ヨコ_
の値に影響を与えることなく処理されているからです。つまり、クローンされたとき
イベントブロックには、変数は読み取り専用として扱われ、値を保持しておくことができません。ということで、ローカル変数のブロックの場所をもう少し検討します。まずは変数の演算の場所をクローンする前に入れてみます。すると期待通りに、クローンの座標が重ならないようになりました。すこしプログラミングブロックが長くなってくると読みにくいので、引数つきの定義ブロックを利用して、繰り返しのブロック処理のパターンをパッケージ化してみます。適当な名前でいいので、ブロック名はふくせいとうごき
、引数はコスチュームばんごう
とでもしておきます。引数つきの定義ブロックを上手く使うと、長めのブロックもすこし短くスッキリ書ける場合があります。
【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ
まとめ
スプライトのクローンは便利ですが、利用するときに扱いをよく理解している必要があります。クローンが何か意図としない動きをしたら、クローンしたとき
イベントブロックの中身をよく確認してみると良いかもしれません。