「変数」とは?

Scratchの「スクリプト」タブにある、「データ」のカテゴリーに「変数を作る」という項目があります。あまり聞き慣れない「変数」という言葉に、指がすくんでしまいます・・!

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

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

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

ねこのスプライトに以下のようなスクリプトを組んでいます。


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

【変数:点数を1ずつ変える】
「もしハートに触れたら」という当たり判定を使っています。「もしハートに触れたら」「点数を1ずつ変える」というブロックをつなげて、ねこがハートに触れたら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」をクリックすることでクラウド変数が作成できます。

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

Scratcherとは?

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

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

変数は削除できない?

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

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

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

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

リストの作り方

データのカテゴリにある「リストを作る」をクリックしましょう。

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

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

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

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

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

🚩をクリックすると、ステージ上のおみくじリストに6つのデータが入ります。

このおみくじリストのデータのどれか1つを、ねこが言うようにします。乱数を使って、リストの中からランダムに言うようにスクリプトを組んでみます。「1番目(おみくじ)」のブロックを「~と2秒言う」のブロックの中にドラッグして下さい。プルダウンメニュー▼を表示して、「乱数」にします。

これで、「乱数番目(おみくじ)と2秒言う」というブロックになります。

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

後処理をしよう

ゲームを繰り返すと、おみくじリスト内にあるデータがどんどん増えていきます。必要なデータは6つだけなのに、おみくじリストには8つのデータが入っていますよね。「大吉」「中吉」はダブってしまっています。

このままでもいいのですが、データがどんどん増えいく状況はスマートではありません。そこで、1回ゲームが終わったらリスト内にあるすべてのデータを削除するスクリプトを追加しましょう。「1番目をおみくじから削除する」のブロックをドラッグして、プルダウンメニューを表示して「すべて」をクリックします。

これで、「すべて番目をおみくじから削除する」というブロックになり、リストにあるすべてのデータをおみくじから削除するプログラムが追加されました。

これで、スタートをクリックした時にはおみくじリストにデータが6つだけ表示されるようになりました。
ねこがおみくじの結果を2秒言った後は、おみくじリスト内のデータが空っぽになります。

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

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

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

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

背景とねこのコスチュームを変えてみました。

いくつかスクリプトを追加して、動きも付けてみました。

クリックするたびに、ねこがおみくじの結果を伝えてくれます。

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

まとめ

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