変数の使い方タイトル画面

変数を使ってみよう

変数とは

プログラミングに欠かせない変数ですが、どういうものなんでしょう。

変数は文字や数字などのデータを一時的に保存して、そのデータを後で取り出せる箱の様なものです。

変数の定義説明の画像

ゲームのプレイヤーの体力を表すHPを100にする
てきに攻撃されるとHPを-1ポイントずつ変える
といったような使い方をします。

変数の作り方

早速、変数を作ってみましょう。

”変数を作る”をクリックすると、”新しい変数”を作る画面が表示されます。

変数を作る画面

この画面で、新しい変数名を作ります。

変数名を作る画面

 

変数の種類

すべてのスプライト用:他のスプライトや背景を含むすべてのプログラムで使える(グローバル変数

このスプライトのみ:変数を作ったスプライトだけが使える(ローカル変数

クラウド変数:インターネット上のサーバーに記録される変数で、使えるのは数字だけ。

グローバル変数とローカル変数

スクラッチを始めたばかりの時は、
複雑なプログラムを作らないと思うのでグローバル変数だけで良いと考えます。

下はサルとカニが10秒間でジャンプする回数をカウントしています。

じゃんぷの名前で、グローバル変数(すべてのスプライト用)としてステージで作成

ジャンプの変数名で、ローカル変数(このスプライトのみ)としてサルとカニで作成

サルとカニのジャンプGif動画

 

グローバル変数

ここでグローバル変数を使っているのは、タイムじゃんぷ(ひらがな)です。

タイム:最初に10として、1秒待つ毎にタイムを-1ずつ変える
10秒から0秒までカウントダウンされて、
その変数は全てのスプライトで共有できます。

じゃんぷ:最初に0として、サルとカニが飛ぶ毎にジャンプを1ずつ変える
サルが飛んでもカニが飛んでも1ずつカウントされるので、
じゃんぷの数は2匹の合計になります。

グローバル変数の説明画像

ステージのスクリプトタイムの変数を使っています。

ステージのスクリプト画像

ローカル変数

ここでローカル変数を使っているのは、
サルとカニでそれぞれジャンプ(カタカナ)の変数名を作っています。

下の画面でわかるように、
ジャンプの変数名の前にMonkey(サル)とCrab(カニ)のスプライト名がついてますね。

ジャンプ:サルとカニが飛んだ回数をそれぞれカウントしています。
そして、このデータはサルだけの変数、カニだけの変数となります。

ローカル変数の説明画像

グローバル変数のじゃんぷ、ローカル変数のジャンプ
どちらも飛んだ時に1ずつ変えるプログラムになっていますが、
共有か個別かでカウント数が変わっていますね。

生徒さんB生徒さんB

ジャンプはサルとカニのそれぞれが飛んだ回数、じゃんぷは合計回数になるんですね

サルのスクリプト画像

カニのスクリプト画像

じゃんぷは、サルが最初に飛ぶと1になり、カニが次に飛ぶと2になる、どちらが飛んでも1つずつ増える

ジャンプは、サルとカニが別々に1ずつ増えるので、それぞれの飛んだ回数になる。

ローカル変数の応用

スクラッチを始めてしばらくすると、
ローカル変数を利用する事が必要になってきます。

そのひとつが、それぞれのクローンにいろいろな動きをさせる時です。
まずは、ネコのクローンを3匹作ってそれぞれに番号をつけてみましょう。

クローン番号を言う画像

最初にネコ番号を0として、クローンを作る度にネコ番号を1ずつ変えるので、
クローンのネコ番号は1、2、3となりますね。

クローンされたあとに、自分のネコ番号を言うようにしています。

クローンに番号をつけるスクリプト

クローンに違う動きをさせるスクリプト

そして、恐竜にぶつかったらそれぞれが違う方向に逃げるようにしました。

ネコ番号1:下に逃げる
ネコ番号2:上に逃げる
ネコ番号3:左に逃げる

クローンに違う動きをさせる動画

画面上のローカル変数のネコ番号は3のままですが、
ネコ番号1と2の変数もクローンに割り当てられていて、
スクリプトにある指示のとおりに逃げている事がわかりますね。

因みに、ネコのプログラムと同じようにイヌ番号をグローバル変数で作ってみました
動画のとおり、変数が変わると3匹のイヌ番号も同時に変わるのがわかりますね

3匹とも左に逃げていきますが、これは3の番号の動きです。

グローバル変数でやってみた動画

上の動画のスクリプトは下図の左側です。
”イヌ番号と言う” のブロックをクローンされた直後に置き換えてみると、
下の動画のようになります。

番号を言うブロック位置を変更した画像

イヌ番号をそれぞれのクローンが1,2,3と言っていますが、
動きはイヌ番号=3の動きですね。

”端に触れるまで繰り返す”のブロックの中に”イヌ番号と言う”が入っていないので、
クローンされた時だけ1~3の数字をクローンが言うのですが、
画面でも解るようにイヌ番号が3になった時に全て3に変わります

イヌ番号をグローバル変数で作成した動画