変数

バージョン

この記事の対象バージョンは2.0です。

概要

変数とは全てのプログラムで使用されている機能で、
値(数)を覚えることができる領域(箱)を用意して
そこに値を保存させます。

利用方法

保存した値は計算や条件分岐で使用したり、
別の値を保存することができます。

メリット

保存した値を様々な箇所で使用することできるので、
プログラムの汎用性を高めることができます。

変数作成

変数の作成はスクリプト項目「データ」の「変数を作る」で行います。

変数の種類

変数を作成するをクリックすると作成ウィンドウが表示されます。

この変数ウィンドウで作成できる変数は2種類あり、
「全てのスプライトで使用できる変数」と
「このスプライトのみで使用できる変数」があります。

全てのスプライトで使用できる変数

「全てのスプライトで使用できる変数」はその名前の通り、
全スプライトの変数を使用する命令で使用可能な変数です。

全てのスプライトで使用できる変数サンプル

上のリンク先のScratchの挙動は猫とこうもりをクリックする毎に
「global_val」という変数に1を足されていきます。
このように「全てのスプライトで使用できる変数」は
スプライト間で変数の値を共有して使用できます。

このスプライトのみで使用できる変数

「このスプライトのみで使用できる変数」はスプライト一つ一つで
値を保持することができる変数です。
全てのスプライトで共有することはできませんが、
個々のスプライトで専用の変数として使用できます。

このスプライトのみで使用できる変数サンプル

上のリンク先のScratchは起動と同時にクローンを使用して猫を3匹にします。
その猫をクリックすると猫一匹一匹がクリック回数をしゃべるという内容です。
このように「このスプライトのみで使用できる変数」はクローンを含めた
スプライトで専用の変数として使用できます。

変数命令

変数命令は「変数の値」「変数○○を△△にする」「変数○○を△△ずつ変える」
「変数○○を表示する」「変数○○を隠す」があります。
これらの命令は「変数の値」を除き、「全てのスプライトで使用できる変数」と
「このスプライトのみで使用できる変数」で作成した変数にしか使用できないので、
注意して下さい。

変数の値

scratch_0118
「変数の値」は命令ではなく変数の値を表すブロックです。
このブロックには現在の変数の値が格納されており、
計算や条件分岐など、様々な箇所で使用します。

scratch_0119
変数の値サンプル
		
上のリンク先のScratchは猫をクリックすると猫が左右に移動します。
その猫をクリックすると、クリック時の猫のx座標を表示しています。

その他の値ブロック

今回の変数の値ブロックはスクリプトのブロック内にも
多数存在し、各変数毎に専用の情報が格納されています。

x座標

scratch_0100
x座標は各スプライトのx座標が格納されている値ブロックです。

y座標

scratch_0101
y座標は各スプライトのy座標が格納されている値ブロックです。

向き

scratch_0102
向きは各スプライトの向きの値が格納されている値ブロックです。

コスチューム#

scratch_0103
コスチュームはスプライトの現在のコスチュームリストの番号が
格納されている値ブロックです。

大きさ

scratch_0104
大きさは各スプライトの大きさの値が格納されている値ブロックです。

背景の名前

scratch_0105
背景の名前は現在表示している背景の名前が格納されている値ブロックです。

答え

scratch_0106
答えはユーザー入力命令の回答が格納される値ブロックです。

マウスx座標

scratch_0107
マウスx座標はマウスのx座標が格納されている値ブロックです。

マウスy座標

scratch_0108
マウスy座標はマウスのy座標が格納されている値ブロックです。

音量

scratch_0109
音量はScratchで設定しているサウンドの音量の値が格納されている値ブロックです。

テンポ

scratch_0110
テンポはScratchで設定されているサウンドのテンポの値が
格納されている値ブロックです。

タイマー

scratch_0111
タイマーは常に値が加算されている変数です。
時間を計る際に使用しますが、その際は「タイマーをリセットする」命令を
使用してからこの変数を使用します。

現在の○○

scratch_0112
時間は現在の時間に関する情報が格納されている値ブロックです。
「年」「月」「日」「曜日」「時」「分」「秒」が選択可能です。

2000年からの日数

scratch_0113
日数は2000年の1月1日から現在の日にちまでの日数が格納された値ブロックです。

ユーザー名

scratch_0114
ユーザー名はScratchで登録しているユーザーの名前が格納された値ブロックです。

変数○○(スプライト or ステージ)

scratch_0115
変数○○(スプライト or ステージ)は選択した
スプライトに関する変数の値を指定して
使用することができる値ブロックです。
Sprite1のy座標
scratch_0117

Sprite1のコスチューム番号
scratch_0116

変数○○を△△にする

scratch_0120
「変数○○を△△にする」命令は指定した変数の値を△△に変更する命令です。

scratch_0124
変数○○を△△にするサンプル

上のリンク先のScratchは猫とこうもりはクリックするとクローンが作成されます。
この時、猫はクローン時に「cat_value」を0にしていますが、
こうもりの「bat_value」はそれを行っていません。
その結果、猫のクローンの「cat_value」は常に0を保っていますが、
こうもりの「bat_value」は本体(コピー元)の「bat_value」の値を引き継いだ
値が表示されています。

変数○○を△△ずつ変える

scratch_0121
「変数○○を△△ずつ変える」命令は指定した変数の値に対して
△△の値を加算する命令です。

scratch_0125
変数○○を△△ずつ変えるサンプル

上のリンク先のScratchは猫をクリックすると「cat_value」を
1加算して表示しています。

変数○○を表示する

scratch_0122
「変数○○を表示する」命令は変数の値を画面上に表示させる命令です。

変数○○を隠す

scratch_0123
「変数○○を隠す」命令は変数の値の表示を非表示にする命令です。