変数を使ってみよう
変数とは
プログラミングに欠かせない変数ですが、どういうものなんでしょう。
変数は文字や数字などのデータを一時的に保存して、そのデータを後で取り出せる箱の様なものです。
ゲームのプレイヤーの体力を表すHPを100にする
てきに攻撃されるとHPを-1ポイントずつ変える
といったような使い方をします。
変数の作り方
早速、変数を作ってみましょう。
”変数を作る”をクリックすると、”新しい変数”を作る画面が表示されます。
この画面で、新しい変数名を作ります。
すべてのスプライト用:他のスプライトや背景を含むすべてのプログラムで使える(グローバル変数)
このスプライトのみ:変数を作ったスプライトだけが使える(ローカル変数)
クラウド変数:インターネット上のサーバーに記録される変数で、使えるのは数字だけ。
グローバル変数とローカル変数
スクラッチを始めたばかりの時は、
複雑なプログラムを作らないと思うのでグローバル変数だけで良いと考えます。
下はサルとカニが10秒間でジャンプする回数をカウントしています。
じゃんぷの名前で、グローバル変数(すべてのスプライト用)としてステージで作成
ジャンプの変数名で、ローカル変数(このスプライトのみ)としてサルとカニで作成
グローバル変数
ここでグローバル変数を使っているのは、タイムとじゃんぷ(ひらがな)です。
タイム:最初に10として、1秒待つ毎にタイムを-1ずつ変える
10秒から0秒までカウントダウンされて、
その変数は全てのスプライトで共有できます。
じゃんぷ:最初に0として、サルとカニが飛ぶ毎にジャンプを1ずつ変える
サルが飛んでもカニが飛んでも1ずつカウントされるので、
じゃんぷの数は2匹の合計になります。
ステージのスクリプトでタイムの変数を使っています。
ローカル変数
ここでローカル変数を使っているのは、
サルとカニでそれぞれジャンプ(カタカナ)の変数名を作っています。
下の画面でわかるように、
ジャンプの変数名の前にMonkey(サル)とCrab(カニ)のスプライト名がついてますね。
ジャンプ:サルとカニが飛んだ回数をそれぞれカウントしています。
そして、このデータはサルだけの変数、カニだけの変数となります。
グローバル変数のじゃんぷ、ローカル変数のジャンプ、
どちらも飛んだ時に1ずつ変えるプログラムになっていますが、
共有か個別かでカウント数が変わっていますね。
ジャンプはサルとカニのそれぞれが飛んだ回数、じゃんぷは合計回数になるんですね
じゃんぷは、サルが最初に飛ぶと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に変わります。