3.4 変数の応用

今回の目的
 変数の最大値・最小値、forループ、配列について覚えます。

 C言語などに触れたことのある人にとっては楽勝でしょう。

 


最大値・最小値
 通常、数字変数には何万何億という値を代入することが可能です。
 しかしゲームによっては、数字変数に代入できる値に上限下限を儲けた方が都合の良いことがあります。

*define

clickstr "」。!?",2

intlimit %0,0,100

game
*start

mov %0,50
変数には%0が格納されています。

変数から70引きます。
sub %0,70

変数の値は%0です。

さらに変数に200足します。
add %0,200

変数の値は%0です。
end
 
 100以上0以下の値は格納されません。

 「intlimit」で変数に最小値・最大値を指定できます。

 「intlimit」の後には、左から順に
 「数字変数」「最小値」「最大値
 を設定します。

 上の例では、%0には0〜100までの値しか入れることは出来ません。

 超過した値は、自動的に最大値・最小値に戻されます。

 


forループ
 forループは、ループ文の中でも最も使用頻度の高いものの一つです。
 最初は使い道が良く分からないかも知れませんが、高度なゲームを作るときには重宝します。

*define

clickstr "」。!?",2

game
*start

for %0=1 to 10

ループ%0回目です。

next

end
 
 「ループ%0回目」が10回繰り返されています。

 「for %0=1 to 10 〜 next」は、
 %0が10になるまでfor〜next内の文を繰り返すという意味です。

 「%0=1」で「初期値」を数字変数に代入します。
 そして、一回ループするごとに変数には1ずつ加算されていきます。
 
 加算される数を1以外にしたいとき…、例えば2ずつ加算したいときは、
 「for %0=1 to 10 step 2」と書きます。

 途中でループを抜けたいときは「break」と書きます。
 するとnextの下へ抜け出すことが出来ます。。

 ※「goto」や「select」を使ってforループを抜け出すのは止めましょう。
  「break」を使わずにループを抜けても、ループ中であることには変わりなく、
  NScrのスタックを無駄に消費してしまいます。

 


配列
 配列とは、変数のリストのようなものです。
 少しばかりややこしいので、先に具体例を見てみましょう。

*define

clickstr "」。!?",2

dim ?0[3]

game
*start

mov ?0[0],10
mov ?0[1],20
mov ?0[2],30
mov ?0[3],40

配列の中身は?0[0]、?0[1]、?0[2]、?0[3]です。

end
 
 変数の中にさらに変数が出来ました。

 「dim」は配列変数を宣言する命令です。
 上の例では「dim ?0[3]」と書くことで「?0[3]」という配列変数が作られました。
 「?0[3]」を図で表すと下のようになります。

 
 ?0という配列変数の中に、さらに0〜3までの要素があります。
 この0〜3の要素の中に値を格納しているのです。

 1番目の要素を使いたいときは、そのまま?0[1]と書いてやればOK。

 基本的に配列変数の使い方は数字変数と同じです。
 四則演算も行えますし、変数に名前を付けることも出来ます。
 ただし値の代入命令は「mov」の他に「movl」を使うことが出来ます。

 「movl」とは、配列の各要素にいっぺんに値を代入する命令です。
 例えば「movl ?0,10,20,30,40」と書けば、上の例の「mov」4行分と同じ意味になります。



 ここまでは1次元の配列を扱ってきましたが、2次元の配列を扱うことも出来ます。

*define

clickstr "」。!?",2

dim ?0[2][4]

game
*start

movl ?0[0],1,2,3,4,5
movl ?0[1],6,7,8,9,10
movl ?0[2],20,21,22,23,24

配列の中身は、
?0[0][0]、?0[0][1]、?0[0][2]、?0[0][3]、?0[0][4]
?0[1][0]、?0[1][1]、?0[1][2]、?0[1][3]、?0[1][4]
?0[2][0]、?0[2][1]、?0[2][2]、?0[2][3]、?0[2][4]です。

end
 
 ここまでくると、もはや行列ですね。

 配列では、[ ]の数を増やすことで次元を増やすことが出来ます。
 二次元配列の構造は下のとおり。

 
 配列変数?0の中に、3×5=15個の要素が出来ました。

 次元が変わっても使い方は同じです。
 3次元・4次元にすることも可能ですが、おそらく使うことは無いと思います。

 配列は多くの変数を管理したいときに非常に便利です。
 数値データがたくさん必要なシミュレーション等で利用してみましょう。

 


まとめ
 これらの変数の使い方を知っておけば、作れるのゲームの幅も広がることでしょう。
 しかし、必要でなければ無理に使う必要はありません。
 特に配列は、変数の種類がそれほど多くないのに使用すると、スクリプトが見にくくなり逆効果です。 使いどころを見極めましょう。
 
 次節では、アニメーションを行います。

 


前へ    TOPへ戻る    次へ