「変数」とは?

Scratchの「スクリプト」タブにある、「データ」のカテゴリーに「変数を作る」という項目があります。

変数は、「変更できる値」のことです。プログラミングにおいて、変数は頻繁に登場します。変数には名前が付けられ、数値や文字列などのデータが保持されます。いまいちピンとこない!という人は、こちらを見てみて下さい。


Scratchでは、ゲームのスコアに「変数」が使われることが多い

Scratch2.0チュートリアル「キャラクターを飛ばそう」を簡略化したゲームです。スクラッチキャットがハートに触れると点数が1点アップします。

ねこのスプライトに以下のようなスクリプトを組んでいます。「🚩がクリックされたとき」の下に「点数を0にする」の変数を入れることで、スタートをクリックしたときは、点数が必ず0になります。これがないと、前回遊んだときに7点取ったとしたらスタートをクリックした時にも7点から始まってしまいます。

「もしハートに触れたら」という当たり判定を使って、ねこがハートに触れたら1点入る変数プログラムを作成します。「1秒待つ」ブロックを入れることで、ねこがハートに触れたときに連続して(2~3点一気に)点数が入ってしまうことを防いでいます。

変数は、数値を入れておく「箱」のようなもの

点数が表示されているこちらのオブジェクトを変数とします。見た目は「0点」ですが、ねこがハートを集めるごとに点数が加算されます。

つまり、このオブジェクトは数値を入れておくための「箱」であり、「0」という数値ではありません。この箱には、「点数を1ずつ変える」という「データ」が保持されているのです。

ですから、見た目が「1点」になったり「2点」になったりするわけですね。

Scratchで変数を作る方法

ではさっそく変数を作っていきましょう。作り方はとても簡単です。
①スクリプトの「データ」にある「変数を作る」をクリックします。


②変数名に「点数」と入力して、「すべてのスプライト用」にチェックを入れます※。「OK」をクリックしましょう。※「すべてのスプライト用」にチェックを入れると、すべてのスプライトに変数が適用されます。


③【変数:点数】の4つのブロックが作成されました。一番上の「点数」の左にチェックが入っていますが、ここにチェックが入っているとステージ上に変数が表示されるようになります。


ステージ左上に変数が表示されています。


ここのチェックを外すと、ステージ上に変数が表示されなくなります。


ステージ左上の変数が消えました。


今回は、点数として変数を表示させたいのでチェックを入れて変数を表示させます。
④変数をスクリプトに組み込みます。
変数が点数の場合は、スタートがクリックされたときに「0点」になるように「点数を0にする」のブロックを必ず入れるようにしましょう。「点数を1ずつ変える」ブロックは、点数が入る条件のブロックの中に入れて、「点数を1ずつ変える」の下に「1秒待つ」のブロックも忘れずに入れるようにしましょう。

変数には3つのタイプがある

Scratchの変数には、「グローバル変数」「ローカル変数」「クラウド変数」の3つの変数があります。ひとつひとつ違いを見ていきましょう。

グローバル変数

Scratchで変数を作ると、「全てのスプライト用」にチェックが入っています。このまま変数を作ると変数がすべてのスプライトに適用される「グローバル変数」になります。


さきほどのゲームはグローバル変数を使って作成しているので、他のキャラクターを追加しても変数が適用されます。たとえば、Scratchチュートリアル「キャラクターを飛ばそう」ではスクラッチキャット以外に黄色のスプライトも追加しています。変数をグローバル変数にしていることで、黄色いキャラクターにも変数が適用されてます。黄色のスプライトもスクラッチキャットと同様のスクリプトを組めば、スクラッチキャットがハートに触れた数と黄色いスプライトがハートに触れた数の合算が点数(変数)として表示されます。

ローカル変数

変数を作る際に、「このスプライトのみ」にチェックを入れると「ローカル変数」になります。ローカル変数にすると、このスプライトにしか変数が適用されなくなります。

たとえば、ローカル変数を適用したねこ(上)を複製したとします。下のねこは、スクリプトもコピーされているので同じをしますがハートに触れても点数が入りません。

変数を他のスプライトに干渉されたくない場合には、ローカル変数を使いましょう。

クラウド変数

Scratcher※は「クラウドデータ」を作成することが出来ます。クラウドデータで使える機能は今のところ「クラウド変数」だけになります。クラウドデータはその名の通りデータをクラウド(インターネット上)に保存する機能ですが、クラウド変数を作成することによって全てのScratcher※がそのデータを参照できるようになります。


クラウドデータは、ハイスコアを作成するときに使えます。
例えば、Aさんがこのゲームで遊んで14点獲得したとします。Bさんが挑戦したら、35点獲得できました。Cさんは25点獲得しました。そうなると、ハイスコアはBさんの35点ということになります。クラウド上に常にハイスコアのデータが保存されているので、違う場所で同じゲームを遊んでもハイスコアが共有されるようになるのです。

クラウド変数の作り方

グローバル変数で新しい変数を作るときに(ローカル変数ではグローバル変数が作れません)、「クラウド変数(サーバーに保存)にチェックを入れて「OK」をクリックすることでクラウド変数が作成できます。

新しく出来たクラウド変数「ハイスコア」は、チェックを入れてステージに表示させます。

ハイスコアのプログラム例

上のピンポンゲームのプログラムは、黄色のボールが下の赤い線に触れるとゲームオーバーになります。「黄色のボールが赤い色に触れたらゲームオーバーを送る」というスクリプトを作成します。

プレイヤーがはハイスコアを更新したら、その点数が「ハイスコア」となるプログラムを追加します。

実際にScratchのゲームで試してみて下さいね!

クラウド変数を作成できる条件

Scratchのプロフィール画面を開くと、ニックネームの下に「Scratcher(スクラッチャー)」の称号があります。


Scratchを始めたばかりの人は、この称号が「New Scratcher」になっていますが作品を作ったり他の人と交流していたりするとScratch teamから「Scratcherへの招待」というアラートが届きます。このアラートが届くと、称号が「New Scratcher」から「 Scratcher」へ変わり、クラウド変数が作成できるようになります。

変数は削除できない?

間違って作成してしまった変数が削除できなくてイライラすることはありませんか?通常は、削除したい変数の上で右クリックすることで変数を削除できますが、稀に右クリックが効かない場合があります。そんな時は、キーボードの「Shift」キーを押しながら削除したい変数の上をクリックしてみて下さい。


「変数を削除」を左クリックすることで変数が削除されますよ。

Scratchでリストを作ってみよう

変数をマスターしたら、次に挑戦したいのは「リスト」です。リストは、本格的なプログラミング言語でいうところの「配列」になります。今から、おみくじゲームを作ります。おみくじの結果を入れておく「箱」がリストになります。

リストの作り方

変数カテゴリにある「リストを作る」をクリックしましょう。


リスト名に「おみくじ」を記入して、「OK」をクリックします。


スクラッチエリアにリストブロックが追加されました。


ステージには、空っぽのリストが表示されます。


空っぽのおみくじリストの中に、データを追加していきましょう。「大吉」「中吉」「小吉」「吉」「末吉」「凶」の6つのデータを追加します。データを追加するときは、「なにかをおみくじに追加する」のブロックを使います。

「なにか」の部分にそれぞれ「大吉」「中吉」「小吉」「吉」「末吉」「凶」と入力します。以下のスクリプトを作りましょう。

このおみくじリストのデータのどれか1つを、ねこが言うようにします。乱数を使って、リストの中からランダムに言うプログラムを作成します。「1番目(おみくじ)」のブロックを「~と2秒言う」のブロックの中に組み込みましょう。

「演算」の「1から10までの乱数」の「10」の数字を「6」に変更します。

ゲームを繰り返すと、おみくじリスト内にあるデータがどんどん増えていきます。スタートをクリックしたときに、おみくじリストの中身を空っぽにしたいので、「おみくじ▼のすべてを削除する」ブロックを追加しておきます。

スタートをクリックすると、ねこがおみくじリストにあるデータをランダムに言うようになりました。


ねこがおみくじの結果を2秒言った後は、おみくじリスト内のデータが空っぽになります。

リストを表示されないようにしよう

おみくじリストが正常に機能することが確認できたので、リストをステージ上に表示されないようにしたいと思います。データにある「おみくじ」ブロックの前のチェックを外しましょう。

これで、ステージにリストが表示されないようになりました。

ゲームをカスタマイズしよう

背景とねこのコスチュームを変えて、動きも付けてみました。クリックするたびに、ねこがおみくじの結果を伝えてくれます。


実際に、Scratchの画面で挑戦してみて下さい!良い結果が出ますように。

Scratch変数「スライダー」を表示する方法

変数は、スライダー表示にして変数を自由に変えることもできます。

ステージ上の変数は、通常このように「変数名+変数」で表示されます。

ステージ上の変数をダブルクリックすると、「変数」のみの表示に切り替わります。

もう1度ダブルクリックしてみましょう。変数がスライダー表示になります!

つまみをマウスでドラッグすることで、変数の値が変化します。

馬のコードです。馬のスピードは、変数の値が大きくなるほど早くなります。

このプログラムは、「わくわくプログラミング2」に掲載されています。

まとめ

Scratchには、「グローバル変数」「ローカル変数」「クラウド変数」の3つの変数があります。ゲームで使いたい用途によって利用する変数が変わってきますので、それぞれの特性をよく理解して変数を使いましょう。「リスト」は、データ(変数)を複数入れておく箱です。データは、乱数と組み合わせることで面白いゲームが作れますのでどんどん活用してみて下さいね。



ScratchはMIT Media LabのLifelong Kindergarten Groupによって開発されました。https://scratch.mit.edu/を参照してください。