【スクラッチ(Scratch)】クローンを使ってみよう!

スクラッチ(Scratch)クローンは、
スプライトをコピーすることができる機能です。

例えば、シューティングゲームで弾を連続して打ちたいときに、
同じスプライトをたくさん作るのは大変。
しかし、クローン機能を使えば
ブロックひとつでスプライトを簡単にコピーできるので便利です。

今回は、クローンの使い方を紹介します。

  • スクラッチのクローンって何?むずかしそう…
  • クローンのブロックの使い方を知りたい
  • 本のプログラムを写して動かすことはできたけれど、
    なぜ動くのか分からない

という方向け。

クローンの機能が分かりやすい、
簡単なプログラムをあげながら紹介します。

スクラッチがはじめての方は、下の記事からごらんください。

 

クローンとは

クローンのイメージ

クローンとは、プログラムを使ってスプライトをコピーすることです。
または、コピーされたスプライトのことをクローンと呼びます。

クローンはオリジナルのスプライトの状態(座標、表示/非表示など)を
引き継ぎながら別のモノとして存在します。
プログラムも引き継がれます。

「クローン」と「スタンプ」のちがい
ペン拡張機能にあるスタンプは、選択中のスプライトと同じ見た目の画像をステージに貼り付ける機能です。
一見クローンと似ていますが、貼り付けられた画像はスプライトではないので、プログラムで動きをつけることができません。
PRオーダーメイド型子ども向けプログラミング教室【LITALICOワンダー】

クローンに関するブロック

クローンに関するブロック

クローンに関するブロックは3種類。
制御のカテゴリにあります。

  • 自分自身▼のクローンを作る
  • クローンされたとき
  • このクローンを削除する

自分自身▼のクローンを作る

指定したスプライトのクローンを作成するブロックです。
自分自身の他に、別のスプライトのクローンを作ることもできます。

同時に存在できるクローンの数はプロジェクト全体で300個まで。
300個を超えた場合、クローンは作成されません。

クローンされたとき

クローンが作成されると、
「クローンされたとき」の下に組み込まれた命令が実行されます。

このクローンを削除する

クローンを削除するブロックです。

また、プログラムを停止するとすべてのクローンが消えます。
ひとつずつ削除する場合は「このクローンを削除する」ブロックを使いましょう。

プログラムを停止する方法は下のとおり。

  • 緑のハタ
  • 停止ボタン
  • 「すべてを止める」ブロック(制御カテゴリ)

クローンを使った簡単なプログラム

クローンを使ったプログラム

クローンに関するブロックを使ったプログラムを作ってみました。
変数「色の効果」を使ってクローンのネコの色を変えています。

  • 緑のハタをおされたとき、ネコのクローンを3つ作る。
  • ハートのスプライトがおされたとき、ネコのクローンを作る。
  • クローンされたとき、色を変えてどこかの場所へいく。
  • ネコのクローンがおされたとき、そのクローンを削除する。
PR全国からオンラインで受講!小学生向けプログラミング教室「プログラミングキッズ」

クローンとイベントブロック

クローンは、スプライトの「緑のハタが押されたとき」以外の
イベントブロックに反応します。

例えばメッセージを送った場合、
オリジナルとクローンどちらも「メッセージを受け取ったとき」ブロックの
下に組み込まれた命令が実行されます。

クローンとイベントブロック

 

変数を使い分ける

変数を追加する画面

そもそも変数って何?という方は、
下の記事からごらんください。

変数には3つのタイプがあり、
変数を作成する時にタイプを指定できます。

  • すべてのスプライトで使えるグローバル変数
  • このスプライトだけで使えるローカル変数
  • 世界中で共有できるクラウド変数

今回は、グローバル変数とローカル変数について説明します。
それぞれの変数のイメージは下の画像のような感じです。

グローバル変数とローカル変数のちがい

では、プログラムを見ながらちがいをみていきましょう。

すべてのスプライト用(グローバル変数)

グローバル変数は、ステージとすべてのスプライトが使うことのできる変数です。

グローバル変数を使ったプログラム

画像のプログラムにある変数「色の効果」はグローバル変数です。

クローンが作成されたときに40ずつ足され、
アヒルのスプライトがおされたとき「色の効果」の値を表示します。

緑のハタをおしてクローンを3つ作った後、
アヒルをおして「色の効果」を表示させたら
すべてのクローンで120が表示されました。

これは、すべてのスプライトが同じ変数「色の効果」を見ているからです。

このスプライトのみ(ローカル変数)

ローカル変数は、このスプライトだけが変えることができる変数です。

クローンを作ったとき、オリジナルのローカル変数の値が引き継がれますが
その後クローンのローカル変数を変更しても
オリジナルのローカル変数が変わることはありません。

ローカル変数を使ったプログラム

画像のプログラムにある変数「数字」はローカル変数です。

クローンが作成されたときに200~300までのランダムな数字を設定して、
アヒルのスプライトがおされたとき「数字」の値を表示します。

緑のハタをおしてクローンを3つ作った後、
アヒルをおして「数字」を表示させたら
バラバラな数字が表示されました。

これは、それぞれのスプライトで持っている
固有の変数「数字」を見ているからです。

オリジナルとクローンの動きを分ける

オリジナルとクローンの動きを分けたい場合、
ローカル変数を使ってオリジナルまたはクローンのどちらか区別させる方法があります。

オリジナルとクローンの動きを分ける

「緑のハタがおされたとき」は、
一度すべてのクローンが削除されるため
オリジナルのスプライトのみ実行されます。

また、「クローンされたとき」
クローンのみが実行されます。

この特性を利用して
ローカル変数(スプライト)に区別がつくような
文字列や数字(オリジナル、クローン)を入れておいて、
ローカル変数の値によってオリジナルとクローンの処理を分けるようにしています。

PRジュニア・プログラミング検定合格を目指そう!個別指導塾ラシク プログラミング講座

クローンを使って雪の結晶を降らせてみた

クローン機能を使って雪の結晶を降らせるプログラムを作ってみました。

雪の結晶を降らせるプログラム

オリジナルのスプライトは、
クローンを作る処理のみで動くことがないので
「隠す」ブロックを使って見えなくしました。

作成したクローンは
「クローンされたとき」「表示する」ブロックで表示させています。

「隠す」ブロックと「表示する」ブロックは見た目カテゴリにあります。

まとめ

クローンとは、プログラムを使ってスプライトをコピーすることです。
また、コピーされたスプライトのことをクローンと呼びます。

クローンを自由に使いこなせるようになるには
大変そうだと感じるかもしれません。

まずは、本などにのっているゲームをマネして作ってみて
どんなふうにプログラムが動くのか
トレース(命令を順番にたどって状態を確認すること)してみるといいと思います。

 

タイトルとURLをコピーしました