2.3 変数のいろいろ

今回の目的
 変数に値や文字を代入したり、計算させたりします。

 その他にも変数の基本的な使い方についていろいろ学びます。

 


変数とは何ぞや
 変数とは、数字文字をしまっておく箱のようなものです。
 箱の中にしまっておいたモノは、必要なときに取り出して使うことが出来ます。

 数字をしまっておく変数を「数字変数」、
 文字をしまっておく変数を「文字変数」と言います。

 また、変数に数字や文字をしまうことを代入といいます。

 


変数の代入と計算
 変数が何なのかさえ分かってしまえば、後は簡単な算数です。
 下のスクリプト例で変数の意味を、感覚的に掴んでください。

 まずは変数に、数字や文字を代入してみましょう。

*define

clickstr "。!?",2

game
*start

mov %0,50

数字変数0の中身は「%0」です。

mov $0,"うさぎさん"

文字変数0の中身は「$0」です。

end
 
 %0が"50"、$0が"うさぎさん"になりました。

 「%」に数字を添えたものが数字変数になります。
 つまり「%0」は「0番目の数字変数」の意味です。

 同様に、「$」に数字を添えたものが文字変数になります。
 つまり「$0」は「0番目の文字変数」の意味です。

 「mov」は変数に値を代入する命令文です。
 「mov %0,50」は「%0に50という数値を代入する」の意味です。
 「mov $0,"うさぎさん"」は「$0に『うさぎさん』という文字列を代入する」の意味です。

 文章中に半角文字で「%0」または「$0」を単体で書くと、
 その変数の中身が表示されます。

 変数を「%%0」や「$%0」のように記述することも出来ます。
 この場合%03が代入されていたら「%3」「$3」と同じ意味になります。



 続いて、変数を使った計算をしてみましょう。
 足し算・引き算・かけ算・わり算、続けてどうぞ。

*define

clickstr "」。!?",2

game
*start

mov %0,0
mov %1,10
mov %2,20
mov %3,30
mov %4,30

add %0,20
0+20=%0@

sub %1,5
10−5=%1@

mul %2,3
20×3=%2@

div %3,8
mod %4,8
30÷8=%3余り%4@

mov $0,"うさぎさん"

add $0,"かめさん"
「$0」

end
 
 四則演算と文字の連結。

 「add」は、変数に値を足します。
 「sub」は、変数から値を引きます。
 「mul」は、変数に値をかけます。

 割り算は少し特殊です。
 「div」は、変数の値を割りますが少数単位は切り捨てられます。
 「mod」は、変数の値を割った余りを出します。

 文字変数で「add」を使うと、文字列が連結されます。

 「add %0,%1」のように変数どうしを足し合わせたりすることも可能です。
 この場合は「%0」に計算した値が格納され、「%1」に変化はありません。



 単なる四則演算以外の命令文もあります。

*define

clickstr "」。!?",2

game
*start

mov %0,10
mov %1,20

inc %0
10+1=%0@

dec %1
20−1=%1@

rnd %2,10
0から10までのどれか=%2@

rnd2 %3,5,20
5から20までのどれか=%3@

end
 
 結果はご覧の通り。

 「inc」は、変数に1を足します。
 「dec」は、変数から1を引きます。

 「rnd」「rnd2」は変数にランダムに値を格納します。
 「rnd %2,10」は、「%2にランダムに0から10までのを代入する」の意味。
 「rnd2 %3,5,20」は、「%3にランダムに5から20までのを代入する」の意味。
 「rnd2」は下限を指定できるのが特徴です。

 


グローバル変数
 変数は「%0〜%999」「$0〜$999」のそれぞれ1000個ずつ使えます。
 そのうちの「%200〜%999」「$200〜$999」は、グローバル変数に指定されています。

 グローバル変数は普通の変数と違って、ゲームを終了したり、リセットをしたりしても変数の中身の値が消えることはありません。

 この特性を生かして、ゲーム中ではクリアフラグやCG閲覧フラグ、シナリオ達成度などに用いられることがあります。

*define

clickstr "」。!?",2

globalon

game
*start

グローバル変数は%200です。

add %200,10

end
  
 左が一回目の起動。右が二回目の起動。ゲームが終了しても値は残ってました。

 グローバル変数を使うには定義ブロックglobalonを入れます。
 するとフォルダ内に「gloval.sav」というファイルが生成されます。
 グローバル変数はこのファイルの中に保存されています。

 


変数に名前をつける
 変数を大量に使うようになると「%0」「%1」では、その変数が何を意味していたのか分からなくなってしまいます。

 そこで、変数に名前をつけてやりましょう。

*define

clickstr "」。!?",2

numalias kokugo,0
numalias sansu,1

game
*start

mov %kokugo,82
mov %sansu,67

国語は%kokugo点です。
算数は%sansu点です。

end
 
 基本的に今までと変わりません。

 「numalias」で数字を名前に変えることが出来ます。
 つまり「numalias kokugo,0」で、%0は%kokugoになりました。

 これで、変数をたくさん使っても混乱することはありません。

 ※使える半角文字は1.8節のラベルと同じです。

 


まとめ
 変数は大抵のゲームでは必須アイテムです。
 また応用次第では、ありとあらゆる使い道があります。

 変数を使いこなせれば大きな力になるでしょう。

 次節では、変数を使った条件分岐を解説します。

 


前へ    TOPへ戻る    次へ