◎配列変数・基礎編◎ 2004.8.14更新

先日、当HPをご覧になられた方から、LiveMakerの配列変数についての質問メールをいただきました。
たしかに初心者の方には、配列変数はわかりづらいかなと思いましたので、今回は講座をひらいてみることにいたしました。
初心者向けコーナーですのでベテランの方にはつまらないでしょうが、後半ではミニゲームもご紹介させていただきますので、興味がありましたらご一読ください。


☆変数
配列変数の前に、まず基本となる「変数」について少々ご説明をいたします。
「変数」とは「変動する数値(または文字)を入れる箱」だと思ってください。
たとえばシューティングゲームの得点を管理するものであったり、ロールプレイングのキャラクターの能力や名前を記録させておくものだったり、数値(文字)が変わっても手軽に扱えるように、名前をつけた「箱」を「変数」と覚えてください。

LiveMakerでは、変数はあらかじめ名前や種類を、変数リストに登録しておかないと扱えないようになっています。
登録のしかたは、チュートリアルを参照してください。
「種類」については「整数」「フラグ」「文字列」の3つを主に使うことになるでしょう。
「実数」型は、緻密な計算でもしないかぎり使用することはありません。
「動作タイプ」は、ほとんど「通常」です。
ゲームをクリアしたときなどの判定に「ステータス」タイプを使うこともありますが、これについては公式サンプルなどで触れられていますので、そちらをご覧ください。
なお、変数の名前には、禁則事項があります。
名前の最初の文字には数字が使えず、他の変数名と同じ名前を重複できません。
それ以外には大きな禁則事項はないので、わかりやすい名前をつけておくと作業が楽になります。


☆代入
変数に数値(文字)をしまうことを「代入」といいます。
LiveMakerでは<計算>ノードで行うことになります。
以下にさまざまな代入例をみていただきます。

 例1:整数変数a = 整数変数b

これは「変数aに変数bの値を入れる」という意味です。
通常の数学とは異なり、変数計算では「左辺の変数に右辺の内容を入れる」というのが一般的です。

 例2:整数変数a = 整数変数b + 100

この場合は、「変数bに100を足した結果を、変数aに入れなさい」となります。

 例3:文字列変数c = "数値" ++ 200

文字列も、上記のように計算(?)ができます。
これは「文字列変数cに、"数値200"という文字列を入れなさい」となります。
文字列をつなげることで、画像ファイル名などを作り、画像表示に利用したりできます。
「神経衰弱」では、これを用いてカード画像を表示しています。
また、最近では配列変数も式に使えるようになっていますので、以前にくらべて比較にならないほど作業がしやすくなっています。


☆フラグ変数
フラグとはそのまま「旗」を意味し、旗を上げ下げすることにより、物事を二通りに判断します。
二通りですので、フラグができるのは、「TRUE」か「FALSE」を格納しておくことだけです。
一般的に、「TRUE」は「真」、「FALSE」は「偽」などと言い換えますが、わかりやすく言えば、スイッチの「on」か「off」です。
主にイベントの管理に使われ、たとえば「パンを食べたかどうかで分岐する」イベントがあった場合、フラグ変数「パンを食べた?」を用意しておき、食べたら「TRUE」、食べなかったら「FALSE」をセットして、そのあとの分岐する判断材料にします。
フラグ変数は整数型変数でも数値を入れ替えることで代用できますが、「on-off」しかないような場合は、なるべくフラグ変数を使用してください。
たぶん実行速度やメモリ容量の面で若干よくなると思います。


☆配列変数
さて本題の「配列変数」です。
配列変数とは、一つの変数名を棚分けして、複数の数値(文字)をしまっておけるようにしたものです。
ただの変数では、数値(文字)は一区切りしか扱えませんが、配列にすることで、同時にいくつものデータを管理できるようになります。
言葉ではわかりにくいと思いますので、下の画面をご覧ください。

※FantasumGirl初期設定:変数代入画面
変数代入画面

これは現在作成中のゲーム「FantasumGirl」の変数入力の一画面ですが、変数名のあとに[]があるのがわかると思います。
[]内の数字が変数の棚番号で、たとえば配列変数「攻撃力[1]」であれば、「攻撃力という棚の上から1番目」を示します。
このゲームには、全部で26人のキャラクターが登場し、番号によって管理されています。

 番号 キャラクター
  0 プレイヤーキャラ
  1 パル1
  2 ケシ―2
  3 フーラン3
  (以下省略)

こうして配列変数にすることで、「キャラクターAの攻撃力がいくつか知りたい」などというときに、名前から番号「n」を取得し、配列変数「攻撃力[n]」を 参照すれば、すぐにわかるようになります。


☆配列変数の利便性
実は、配列変数を使用しなくとも、普通の変数を複数用意するだけで同じ動作を作ることはできます。
それなのになぜわざわざ配列変数でデータ管理をするのか、ご説明いたします。

最大の理由として、「普通の変数で管理するのがめんどうくさい」ということが上げられます。
どうせ管理するなら、わかりやすいほうがいいに決まっているので、配列を使うのです。
たとえば上記の「攻撃力」一つを取っても、配列を使わない場合は、変数リストに一人ずつ変数を登録しなければなりません。
その場合、変数リストには「攻撃力」だけで「26人分26個」の変数名が並びます(プレイヤーキャラ攻撃力、パル1攻撃力、ケシー2攻撃力……)。

第二の理由は、指定がしやすい点があげられます。
変数名の[]に、番号(添字といいます)を与えるだけで目的の数値が得られるのですから、複雑な処理を必要とするとき楽になります。
実際、FantasumGirlでは、5人の敵キャラの中から3人をランダム選出して、プレイヤーと4人同時戦闘をするようになっていますので、誰が戦闘に参加しているのか、誰を攻撃するのかなどを判断するためには、配列変数でも使わないととんでもなく長い処理が必要になってしまいます。
逆にいいますと、このような複雑な数値処理が必要でないノベルゲームであれば、配列変数はいらないでしょう(Pure☆Colorsでは使っておりません)。


☆二次元配列
配列変数を二つに組みあわせたものを「二次元配列」といいます(単純ですが、三重のものは「三次元配列」)。
上記の画面で言えば、「スタンバイ技[x,y]」がそれにあたります。
これを表にしますと、以下のようになります。

二次元配列変数:スタンバイ技[x,y]の内容
x→:y↓0123(以下省略)
プレイヤーパル1ケシー2フーラン3(以下省略)
0 0 0 0 0 (以下省略)
1 0 0 0 0 (以下省略)
2 0 0 0 0 (以下省略)
3 0 1 2 3 (以下省略)
4 0 2 3 4 (以下省略)

ここでは横軸をx、縦軸をyとしています。
FantasumGirlでは、一キャラにつき、5つの「技」を登録できます。それが縦軸yの0〜4です。
横軸xはキャラクター番号をあらわし、「番号xのキャラクターの、y番目の技がnです」というように管理されています。
たとえば、パル1の4番目の技を知りたいときは、スタンバイ技[1,3]を参照すればいいのです。


☆配列変数の登録
配列変数を使う場合は、変数リストで「名前」や「種類」を登録しておいて、その後「配列宣言」をしないといけません。
配列宣言とは、「××変数をn段の棚にします」ということをパソコンに教えることです。
LiveMakerでは<計算>ノードで配列宣言をします。

※FantasumGirl初期設定:変数「攻撃力」の配列宣言
配列宣言

これが正しい書式かどうかわからないのですが、いちおうこれで正常に動作しているので、わたしはこの変な書式で配列宣言をしています。
()内の「攻撃力」はもちろん変数名で、「26」という数値は、26キャラ分の箱を作りますという意味です。
配列宣言は一度行えば十分なので、チャートのはじめのほうで初期設定としてやってしまいましょう。


☆「パネルがウガァ!」
長くなってしまいましたが、ここで配列変数を用いた単純なゲームをご紹介いたします。

以下のファイルを任意の場所にダウンロード(要解凍)したのち、LiveMakerからLiveNovelを立ち上げ、先ほどのファイルを開いてください。
このプロジェクトファイルは、個人でのご利用にかぎり、ご自由にお使いいただいてかまいませんが、無断での転用・転載などは禁じさせていただきます。

 LiveMaker用プロジェクトファイル  パネルがウガァ!(lzh圧縮)

※パネルがウガァ!実行画面
パネルがウガァ!

センスのかけらもないタイトルですが、いちおう知的ゲームです。
画面上は5×5のフィールドになっておりまして、クリックしますとそのマスを中心に十字のパネルが色を変えます。
画面上のパネルを全て青にすればクリアです……といいたいのですが、理論的に一定方法でめくっていけばクリアできるはずなのですが、わたしの頭ではできなかったので、少々判定を甘めにしてあります。
画面上、1マスだけ赤が残るか、数マスだけ黄色になるかでクリアしたことになります。
いちおうレベルがあり、レベル1は青と黄色の2色、レベル2は青、黄色、赤の三色パネルです。
三色パネルは、クリックするごとに「青→黄色→赤→青→黄色……」と変化します。
なにぶん、半日で作ったゲームですので、あまり期待せずに遊んでください。

本来はこのプロジェクトの解説を行う予定でしたが、予想以上に変数の説明でスペースを取ってしまったので、今回は見送ります。
とくに難しいことはしていないつもりですが、ちょこちょこと小さなテクニックが入っていますので、わかりにくいかもしれません。
そのへんは、次回「配列変数・応用編」で解説したいと思います。
どうぞみなさん、うまくパネルがそろわなくて、「うがぁ!」と叫んでください(笑)。

それでは、今回も長々とありがとうございました。



    ホームへ戻る