(BACK to TOP)

1時限目.変数と乱数

ASを学ぶ前に、その前の基礎、日本語の学習で言えば「文字を覚える」レベルの基本を学ぶ必要がある。
しばらくは実体のないモヤモヤした話が続くが、どうしても今後必要になる事である。しっかり覚えること。

1−1.変数とは
今までは大抵の事をparaflaに任せてきた訳だが、これからは細かい事を自力でやらなければならない。
そこで、特に必要となるのが数などをどこかに記録しておくことである。
そのために、変数という入れ物を使うことが出来る。


変数a

変数p

変数には自分で好きな名前をつけ、数や文字などを入れて使う。
基本的に1つの変数には1つの物しか入らないので、後から別の物を入れた場合には、元からあったものは捨てられる

例えば、スクリプトでこのように書く。

a = 3;

これは、aという名前の変数に、3という数を入れた事を意味している。

最後のセミコロンは、どんな場合でも、1つの文の最後に必ず必要となるものである。忘れない事。

いちいちスペースを挟んでいるが、これは見やすくする為のものであり、詰めて書いても構わない。しかし単語ごと、記号ごとにスペースを挟む事を強く推奨する。
スペースのかわりにタブを使うこともできる。

a = 2;
a = 5;
a = 0;

では、この例はどうだろうか。
3つの行があるが、基本的にスクリプトは上から順番にひとつずつ実行される。

変数aに最初に2が入り、次に5が入るので入っていた2という数字は捨てられる。最後に0が入り、0だけが残るので、変数aの最終的な中身は0になる。



さて、変数の名前がaでは素っ気無いので、自分で好きな名前をつけてみる事にする。
変数の名前、変数名についてのルールは以下である。

・変数名の全てが、半角英数字(a〜zと0〜9)か、アンダーバー()であること。
・1文字目は数字でないこと。
・予約語と同じ名前でないこと。

kaerucyborg_009uhaなど、ルールに適っていれば好きな名前をつける事が出来る。
が、当然ながら、変数の名前から中身が想像出来たほうが良い。
特に意味もなくblack_thunderだのprecuremarblescrewだの、中身がわからない上に長い変数名を作っても、結局こんがらがるのは自分である。

日本人らしく、kaisuzahyouなど、ローマ字の名前を使うのは良い方法である。

また、変数名は大文字小文字を区別しない
nagisa Nagisa NAGISA NaGiSa これらは全て同じ変数として扱われる。特に理由がなければ全て小文字を使うとわかりやすい。

最後に予約語と同じ名前でないことという条件がある。
これは、例えばgotoAndPlayという命令があるのだが(これが何かは今は知らなくて良い)、この単語はすでに命令という事が決まっているので、同じ名前を持つ変数を自分で使う事は出来ないという事。
予約語は命令の他にも色々あるが、そうそう被るものでもないので、問題が起きるまでは気にしなくて良い。

1−2.変数の種類
変数に数字を入れる方法を前述したが、数字以外を扱う事も可能である。
変数の種類は、大別して4つに分類される。

・数を扱い、演算(計算)も出来る数値型変数
・文字を扱う文字列型変数
・「はい」「いいえ」の2種類の値を持つ論理型変数
・様々な情報を利用するための状態変数

これらは特に自分で定義する必要はない。
変数に数を入れれば自動的にそれは数値型変数になるし、その他も同様である。
変数を作る時に心の中で決めておいて、以後自分で間違えなければよい。

UPPER TIPS
「状態変数」は完全な造語なので他で使わないように。
かんらかんら。

以下、それぞれについて説明する。

1−2−1.数値型変数
数を扱う変数を数値型変数と呼ぶ。
数を変数に入れる方法を前述したが、変数に入っている数を使って計算をする事も出来る。

a = 3;
a = a + 1;

2行目に注目。どこをどう考えてもイコールの左と右が同じじゃないのだが、
「=」がひとつだけ出てきた場合、これはイコールの右側の内容を、左側に入れるという意味になるからである。
この事を代入と呼ぶ。

a ← 3;
a ← a + 1;

このように、イコールを左向きの矢印に変えるとわかりやすいかもしれない。
まず、aに3が入り、a←3+1 となるので、aは最後に4になる。
変数の内容を増やしたり減らしたりする時はこのような方法をとる。

以下が演算記号である。記述と難しい記述は同じ意味だが、慣れるまでは簡単なほうを使う事を推奨する。
記述難しい記述
a = a + b;
a += b;
足し算
a = a - b;
a -= b;
引き算
a = a * b;
a *= b;
掛け算(アスタリスク)
a = a / b;
a /= b;
割り算(スラッシュ)
a = a % b;
a %= b;
剰余(割り算の余り)
a = a + 1;
a ++ ;
1を足す時にはこのようにも書ける
a = a - 1;
a -- ;
1を引く時にはこのようにも書ける

以下のように、変数を使わない計算ももちろん可能である。
数学と同じように、足し算引き算よりも掛け算割り算のほうが優先される。これをカッコを使って計算順序を変えるのも数学と同じである。

a = 100 + 200;
a = 12345 * 54321;
a = (2 + 3) * 7;

1−2−2.文字列型変数
文字を扱う変数を文字列型変数と呼ぶ。
数値型変数と大きく違うのは、扱う文字は全て、ダブルクォーテーションで囲まなければいけないという点である。
キーボードでは[SHIFT]+[2]で入力する。

s = "光の使者";
s = 光の使者;

上のように書かなければならず、下は間違いである。

変数に入れる時に限らず、文字列(特に日本語)が、「"」で囲まれずに書かれる事は有り得ない事を覚えておく事。
「"」で囲まれていない文字は、全て変数名か、命令か、特別な記述である。

また、囲み始めの記号と、囲み終わりの記号は、共に「"」である。カッコなど、始めと終わりの記号が違うものと区別する必要がある。

UPPER TIPS
ダブルクォーテーションで囲む他、アポストロフィ「'」で囲む事も出来る。
それぞれの特徴と利点については説明しない。

文字に演算もへったくれも無いが、足し算だけは可能である。

s = "光" + "の";
s = s + "使者";
sの中身 → "光の使者"

というような事が出来る。文字をいちいち「"」で囲むのを忘れない事。

また、数値型変数をそのまま混ぜる事も出来る。

hensin = 3;
s = "今週の変身シーンまで、あと" + hensin + "分!!";

さて、囲み記号が「"」である以上、変数の中に「"」の記号を入れられないという事になるが、これをどうにかするのが特殊記号である。
文字列の中に以下の左側のように書くと、右側の意味になる。

 \' 
「'」の文字
 \"
「"」の文字
 \\
「\」の文字
 \n
改行する
 \t
タブ

「\」という記号には、次の文字をそのまま表示するという意味もある。
また、文字列を表示しようとした時に、日本語がどうも文字化けするような場合でも、そのあたりの部分の文字の前に「\」をつける事で直るかもしれない。

s = "表示する"; ←何故かこれを表示すると文字化けする
s = "\表\示\す\る"; ←これでOK

1−2−3.論理型変数
通常、変数の中身の種類は無限である。数値型変数であれば、1が入っているかもしれないし、5かもしれないし20億かもしれない。

しかし、中身がtrue(トゥルー)false(フォルス) の2種類しか有り得ないのが、論理型変数である。

trueは「正しい」「はい」「肯定」などの意味であり、
falseは「間違っている」「いいえ」「否定」などの意味である。

b = true;
b = false;

このように普通に変数の中身として扱う。
trueとfalseは文字列ではないので、「"」で囲ってはいけない。

不便な変数なので、特に自分で使う必要はない。
では何故これを覚えるのかというと、自分で使わなくてもお世話になる場合があるからである。

例えば、「このスプライトは存在するか」という内容をASに聞くと、その結果は true か false で返ってくる。
この内容をもとに処理をする場合など、true/falseの意味がわかっていなければ困るという事である。

なんとなくでもtrue/falseの2語は覚えておく事。

1−2−4.状態変数
状態変数は、他の変数とは違って特殊である。
通常の変数は、自分で作って自分で管理する。自分が知らないうちに中身が変わっていたりする事は有り得ない。
しかし状態変数は、最初から名前が全て決まっており、自分で作る事は出来ない他、その時の状態によってリアルタイムに中身が変化するという特殊な変数である。

例えば、_x という状態変数がある。
これは、表示しているスプライトのX座標が常に入って変動している他、
この変数に数字を代入する事で、スプライトのX座標を変更(操作)出来るのである。
用途はスプライトに留まらず、flashの属性やマウスカーソルの位置など様々な事に利用出来る。

とても便利な物だが、今の所は使い方について考えなくてもよい。
いずれ詳しく解説する。
UPPER TIPS
通常の用語では、
「スプライト」の「状態変数」は
「ムービークリップ」の「プロパティ」と呼ぶ。

1−3.乱数
乱数とは、無作為(ランダム)に1つ選ばれた数のことである。
PCにサイコロを振らせるような事と考えるとよい。

乱数を使うには、Math.randomという命令を使うのだが、このMath.randomが一体何者かは知らなくて良い。
公式として示すのでこのまま使うこと。

整数の乱数を取得する
hensu = int(Math.random() * 乱数の幅 ) + 乱数の最低値 ;

小数の乱数を取得する
hensu = Math.random() * 乱数の幅 + 乱数の最低値 ;

乱数の幅とは、取得しようとする乱数の最低値と最高値の幅の事である。
例えば(1,2,3)の範囲の乱数を取得したいのであれば、整数の場合は数は3つなので乱数の幅は3になる。(4,5,6,7,8)ならば5になる。

乱数の最低値とは、取得しようとする乱数の最低の値の事である。
(1,2,3)の範囲の乱数を取得したいのであれば、乱数の最低値は1になる。(4,5,6,7)ならば4になる。最低値が0ならば省略してもよい。

hensu = int(Math.random() * 5)+ 1; //1〜5の範囲で整数の乱数を取得
hensu = int(Math.random() * 7)+ 4; //4〜10の範囲で整数の乱数を取得

なお、
//
とスラッシュを2つ並べると、その行のそこから後は全て無視される。註約を書く時などに使う。

UPPER TIPS
hensu = Math.random();
とする事で、0以上1未満の範囲の、小数の乱数を取得する。
これがMath.randomの本来の機能である。



最後に、乱数の項で少し出てきたint命令について説明をしておく。

こういった、具体的にASに何かをさせるような言葉を命令と呼ぶ。
本来は具体的な用途などによって「関数」「手続き」等と呼び分けるが、本講義では「命令」で統一している。

int(インテジャー)
小数を整数にする命令
使い方:
int()

説明:
カッコの中に数を入れると、それが小数だった場合、切り捨てられて整数になる。
整数の場合は、そのままである。
a = int(4.5); // aには4が入る
a = int(7); // 整数の場合は変わらない。aには7が入る

a = 4.5;
b = int(a); // もちろん変数も使える

以上で変数についての講義は終了である。
次は、変数並みにお世話になるであろう、条件分岐について解説する。

(次の講義へ)

(BACK)