熊でもわかるRGSS講座 超初級編

<<前の章へ       第4章 変数ってなんなのさ       次の章へ>>


 注意
 今回する変数の説明は、必ずしも正しくありません。正確に説明すると、初心者には分かりにくくなると思い、簡略化しています。



 さて、今日は、変数についてじゃ。
 う、うん。よろしく、頼むわ・・・。
 そんなに構えるな。変数など、基本を抑えれば、簡単なものじゃ。
 うん・・・。
 そもそも、変数とは何か? ということじゃが・・・。
 まあ、一言で言えば、データを記録しておくための仕組みじゃな。
 ふん・・・。
 ゲームでは、多くのデータを記録しておく必要がある。例えば、RPGなら、HPとか防御力とか経験値とかな。そういうデータを記録するための仕組みが、変数なんじゃ。
 うん。まあ、それは分かるで。
 では、早速変数にデータを記録してみるかのう。例によって、スクリプトエディタを開いて、セクション『Main』を表示するんじゃ。
 うん、開いたで。
 では、このように書いてみろ。n = 1 そして次の行に、p n。
 こんでええの?

7
8
9
begin
  n = 1
  p n

 うむ、ええぞ。
 n = 1 というのが、変数にデータを記録する処理じゃ。ここでは、nという名前の変数に、1という数値を記録しとる。
 次の p n は、変数nの値を表示する処理じゃな。したがって、これを実行すると1と表示されるはずじゃ。



 うん。表示されたで。
 うむ。このように、pで変数を表示した場合、変数に記録されている値が表示される。nという変数名が表示されることは無いぞ。
 なあ、じいちゃん。nっていう名前は、どっから出てきたん? 変数には、必ずnっていう名前をつけなあかんの?
 いや、なんでもええぞ。変数の名前は、適当につけてええんじゃ。nでもxでもな。一字でなくてもええぞ。hensuuとか、hpとか、speedとか、何文字でもええんじゃ。
 漢字とかでもええの?
 いや、残念ながら、アルファベットや数字しかだめなんじゃ。正確に言うと、下記のような名づけルールがある。

1.使える文字は、半角の、アルファベットと、数字と、 _ (アンダースコア) だけ(全角文字は使えない)

2.ただし、最初の文字だけは、アルファベットの小文字か、 _ (アンダースコア)しか使えない(大文字と数字は、最初の文字には使えない)

3.予約語は変数名に使えない



 予約語ってなに?
 特別な意味を持つ単語として予約されているものじゃな。具体的には、下記の単語じゃ。これは、変数の名前には使えん。  

alias      def      false      nil      return      unless      and
do      for      not      self      until      begin      else      if
or      super      when      break     elsif      in      redo      then
while      case      end      module       rescue      true      yield
class      ensure      next      retry      undef


 うう・・・覚えきられへん・・・。
 覚える必要は無い。なぜなら、予約語をスクリプトエディタに書くと、青色で表示されるからじゃ。したがって、予約語を書けば、すぐに気づく。
 なるほど、そんならええな。
 変数は、プログラムを開始したときには、まだ存在しないんじゃ。
 プログラムの中で、n = 1 のように、データを記録する処理が行われると、自動的に記録する場所が作られ、変数名がつけられて、管理されるようになる。
 そうやって変数が作られると、それ以降は、ずっと値が保持される。勝手に消えたり、勝手に値が変わったりすることはない。
 そうなんか・・・。
 とは言え、プログラムが終了したら、変数も消えるがな。それに、変数の種類によって、どのタイミングで消えるか変わってくる。まあその辺は、もう少し後でやるがな。
 うん。とりあえず、覚えるのは、n = 1で、データが記録できるっちゅうことやな。
 うむ。おお、そうじゃった。肝心なことを教えてなかったぞい。そうやって、データを記録することを、代入というんじゃ。
 n = 1 なら、『nに1を代入する』という言い方をするんじゃ。
 ああ、代入は、イベントのほうでも出てきたな。
 そうじゃな。ちなみに、代入に使う = (イコール)の記号は、数学で使う『等しい』という意味ではないからの。RGSSでは、= は、代入の記号じゃ。
 その辺が、ややこしいねん・・・。
 まあ、覚えるしかないのう。さて、次はこれをやってみるぞ。

7
8
9
10
11
begin
  n = 1
  n = 3
  p n

 これで、なんと表示されるか、分かるか?
 ええと・・・一個目のnと、二個目のnは、どうなんの? 別々に記録されるんか?
 いや、それはない。同じ名前の変数が、2つできることは無いんじゃ。
 うーん、そしたら、nに1が入って、それから3が入るから、合わせて4か?
 不正解じゃ。答えは、3じゃな。
 合わせたらあかんのか・・・。
 そうじゃ。代入をした場合、前に記録されていた値は消え、新しく代入された値に書き換わるんじゃ。
 なるほど。
 では、これはどうじゃ?

7
8
9
10
11
begin
  x = 2
  y = 3
  p x + y

 ええと、xには、2が入ってて、yには3が入ってるから、2 + 3で、5か?
 正解じゃ。
 ふう・・・やっと正解したで。実際に、やってみよ。



 うん。ちゃんと表示されたで。
 このように、変数を計算に使う場合、変数に記録されている値で計算するわけじゃな。
 では、これはどうじゃ?

7
8
9
10
11
12
begin
  x = 10
  y = 4
  n = x - y
  p n


 ええと、xが10で、yが4やから、10引く4で6になるから、nに6を代入したと同じことになんのかな?
 そしたら、答えは、6やな。
 正解じゃ。このように、計算結果を変数代入することもできるわけじゃな。
 ふむふむ・・・。
 では、次は、自己代入をやってみるかのう。
 なにそれ?
 自分に自分を代入することじゃ。つまり、n = n ということじゃな。
 そんなことして何の意味があんの?
 もちろん、n = n は意味無いがのう。しかし、これなら、意味があるじゃろ?
 n = n + 1
 ええと、n に n+1を代入するんか・・・。ってことは、nの値が1個増えるってこと?
 そういうことじゃ。プログラムを書くとき、ある変数の値を増やしたり減らしたりしたいことがよくある。
 そういうときに使うのが、
自己代入じゃ。
 ふうん・・・。
 自己代入は、n = n + 1 のように書いてもいいんじゃが、もっと簡単に書くことができるようになっておる。それが、下記のような書き方じゃ。

  n += 1   #nに1を加算する
  n -= 1   #nから1を減算する
  n *= 1   #nに1乗算する
  n /= 1   #nを1で除算する
  n %= 1   #nを1で除算した余りを求める


 なるほどな。
 実際にやって確認してみい
 うん。



 あれ? なんか変なのが出た!
 うむ。エラー表示じゃな。プログラムに間違いがあったんじゃ。どれ、どのように書いたか見せてみい。
 こんな感じやけど・・・。

7
8
9
10
begin
  n += 1
  p n

 これでは、いかんのう。
 何があかんの?
 さっき言ったじゃろ?  変数は、プログラムを開始したときには、まだ存在しないんじゃ。代入を行って初めて、変数が作られる。
 代入をせんうちに、計算に変数を使おうとすると、エラーが出るんじゃ。
 そやけど、n += 1 も、代入やろ?
 自己代入は、代入とは別なんじゃ。変数は、普通の代入を行ってからでないと、ほかの処理に使えんのじゃ。
 なんや、ややこしいなあ・・・。
 これはもう、癖にするしかないのう。変数を使うときは、最初にまず代入じゃ。
 そしたら、これでええのん?

7
8
9
10
begin
  n = 1
  n +=
1
  p n


 ええぞ。
 これやと、1を入れといて、それに1加算するから、2て表示されればええんやな。
 そうじゃな。



 よっしゃ、やっとでけたで!
 うむ、よくできたのう。
 ふう・・・。それにしても、覚えること、たくさんあるな・・・。
 では、次で最後にするかの。
 うん。
 次は、文字列じゃ。文字列を、変数に代入するには、どうすればええかの?
 ええと・・・こうかな?

7
8
9
10
begin
  n = グレちゃん
  p n


 なんか、忘れとりゃせんか?
 な、なんやろ?
 第2章を読み返してみろ。
 ええと・・・・・・。
 あ! 分かった、ダブルクォートや!

7
8
9
10
begin
  n =
"グレちゃん"
  p n


 こんで、ええかな?
 うむ。そうじゃな。文字列は、ダブルクォートで囲う。お約束じゃ。では、実行してみろ。



 おっしゃ、出たで
 うむ。これで、変数にデータを代入して、計算したり、表示したりすることは、できるようになったのう。
 うん・・・そやけど、あんましプログラム書けるようになった気はせんな・・・。
 まあ、変数だけでは、ろくなことはできんからのう。しかし、次にやる条件分岐やループを覚えると、プログラムらしいことができるようになるぞ。
 うん。そう言えば、こないだ画像を動かしたやつは、ゲームっぽかったな。あれにも、ループ使てたな。
 うむ、と言うわけで、明日はループじゃ。
 うん。ほな、また明日な。



 本日のおさらい
・変数名には、好きな名前をつけられる(ただし、名づけ規則にしたがって)
・変数は、まず代入から(代入しないと使えない)
・変数で、計算も出来る
・変数には、文字列も入る

 次の章は
第5章 ループで繰り返し処理

 リンク
>>>この講座のトップページ
>>>タンクタウンのトップページ