インクルード講座第1回 インクルードを作る前に①


某たわしです。
以前予告したとおり、インクルードの作り方講座を始めたいと思います。
まずは第1回目と称しまして、インクルードを作る前に知っておくべき事をおさらいしましょう。
今日のテーマは①「変数&配列」です。
②「条件分岐」③「繰り返し処理」は次回にでも。
これら3つの事項は、インクルードに限らず、シナリオを作成する上でもとても重要な要素です。
インクルードを作成する前にぜひとも覚えておきましょう。


変数とは、数値や文字情報を保管しておく領域の事で、一時的に何かを入れておく入れ物と考えていただけると分かりやすいと思います。


通常のプログラミングでは変数に様々な型があり、尚且つ変数の用途も最初に決めてしまうため扱いづらいものですが、SRCでは文字型=>数字型、数字=>文字型に勝手に修正してもらえるうえに、最初に用途を決めておく(宣言)も必要ありません。
つまり、「変数名 = 数字や文字」「Set 変数名 数字や文字」などのように変数名を指定して使い始めた直後から変数として使用可能なのです。
しかし、SRCにおいても変数の型は4つありまして、中には変数の働きを区別する為にコマンドによる宣言が必要な型もあります。
宣言が不要な上記の変数は「ローカル変数」と呼ばれる型になります。
コマンドによる宣言が必要な変数は、以下の二つです。

グローバル変数


Globalコマンドにて宣言された変数です。
このコマンドを実行して変数を作成すると、セーブデータに情報が保存されるようになり、情報の引継ぎが可能になります。
例えば、
・隠しキャラを仲間にするためのフラグ
・シナリオで使う各種設定
などの仕様用途が挙げられます。

サブルーチンローカル変数


Localコマンドにて宣言された変数です。
この変数はサブルーチン内(ラベル〜ReturnやExitまで)でのみ有効な変数で、ラベル内の処理を終了すると変数は削除されます。
上記「ローカル変数」と名前は似ていますが、まったく別物なので注意してください。
主な用途は、
・一時的な計算結果を保存するための変数
・関数で参照したデータを一時的に格納するための変数
などに利用されます。

変数の使用例


・ローカル変数


Set 前半クリアフラグ 1(または"前半クリアフラグ = 1"でもよい)
Goto "スタート"


"前半クリアフラグ"という変数にクリアした事を意味するため1を代入し、
再びスタートイベントラベルに飛びます。
スタートイベントラベルでこの変数の状態に対しての条件分岐を入れておけば、1ステージで2回戦闘を行う事も可能です。


グローバル変数


Talk パイロットA
パイロット! どういうつもりだ!
Talkパイロット
貴様に話す舌など持たん!
End
Global 敵パイロット説得フラグ
パイロット説得フラグ = 敵パイロット説得フラグ + 1


この場合、敵パイロットに対してのイベントが一つ進行したため、変数に1を加算しています。
変数は右に変数名を書く事でその内容を参照する事も可能です。
上記の場合は作成されたばかりの変数に1を加算したため、"敵パイロット説得フラグ"の中身は最終的に1になります


・サブルーチンローカル変数


Local 計算用


計算用 = 1 * 3
計算用 = 計算用 + 5


Return 計算用


インクルードでの使用が最も多い例です。
計算用に1*3(結果は3)を代入、その後計算用にさらに5を加算(結果は8)。
Returnコマンドに計算結果を設定する事で、サブルーチン内で計算された結果のみを返すことも可能です。


これらとは別に「システム変数」と呼ばれる変数が存在します。
これはシステムで扱われる情報を保存するための変数で、ほとんどの場合において読み取り専用となっており、情報が保護されています。
詳しくは"ヘルプ=>シナリオの作成=>変数"を参照してください。


次に配列について説明します。
配列は、変数を複数連ねた1グループの固まりと考えるとよいでしょう。
配列を使うと、大量の情報を一括して管理できるようになります。
味方キャラごとの撃墜数の管理、シナリオの各種設定管理などに向いています。
配列を扱うには、"変数名[インデックス]"と入力します。
インデックスには数や文字などを設定できます。
基本は変数と同じです。


配列もGlobalコマンドやLocalコマンドが使用できます。
この場合、変数名だけを宣言すれば、要素ごとに宣言する必要はありません。
つまり、通常どおり変数を宣言すればよいのです。
なお、配列のインデックスは一つだけではなく2つ以上設定できます。
その際、配列は2次元配列、3次元配列、などとインデックスの数を頭につけた名前で呼ばれます。
要素名を複数記述するには、","で区切る事が必要です。

配列の使用例


撃墜数[パイロットA] = 3
撃墜数[パイロットB] = 5


この場合、パイロットAの撃墜数に3、パイロットBの撃墜数に5が代入されます。
セーブデータとして情報を残したい場合は、"撃墜数"という変数をglobalコマンドで作成しておきましょう。


マップ情報[1, 1] = 1
マップ情報[1, 2] = 0


2次元配列の使用例です。
要素名1をマップのX軸、要素名2をマップのY軸として、それぞれのマスの情報を保存しています。
一個一個入れていくのは大変ですが、今後説明する「繰り返し処理」を利用すると、こういった管理も楽になります


変数・配列に関しては以上です。
説明不足な点などがありましたらコメントください。