グローバル変数の扱い方について
基盤では積極的にグローバル変数を用いてます。メリット・デメリットがありますが、メリットのみ紹介しますw値を保持するのが簡単、アクセスが簡単の2点が挙げられます。
値を保持するのが簡単とはどういうことでしょうか。ゲームは開始した直後から終了する直前まで保持するべき値を持ちます。たとえばRPGのレベルやステータスといったものから、読み込んだ画像や音声のハンドル、アニメーションのための経過時間などさまざまなものがあります。しかし、関数内で普通に宣言された変数(auto宣言されたローカル変数)は、その関数が終了するとき、値が破棄されます(正確な内部動作は違いますが)。これでは値を記憶することが出来ません。しかし、グローバル変数はプログラムが開始した直後からプログラムが終了する直前まで値を保持します。先の変数と違い、関数が終わるとかそういったことがありませんからね(正確な内部(ry)。値を保持する方法は他にもありますが、一番簡単なのがこのグローバル変数を用いた方法だと思います。よって基盤ではこの方法を用いています。
では、アクセスが簡単とはどういうことでしょうか。グローバル変数は外部変数宣言をすることでさまざまなソースファイルからアクセスすることが出来ます。そのため、自由な記述が可能になります。グローバル変数を異なるソースファイルからアクセスするにはこの外部変数宣言が必要になります。もともとグローバル変数はただ宣言するだけだとそのソースファイル内からならどこからでもアクセスできるというもので、異なるソースファイルからはアクセスすることは出来ません。そこで、この外部変数宣言というものが必要になります。詳しくは後で書きたしますが、ただゲームを作るだけなら知る必要はありません。基盤では簡単にグローバル変数を全てのソースファイルからアクセスすることが出来るような構造を持っています。グローバル変数を足すときも簡単に出来ます。詳しくは別の項で説明しますが、global.hに見よう見まねで書き足すだけで大丈夫です。
値を保持するのが簡単とはどういうことでしょうか。ゲームは開始した直後から終了する直前まで保持するべき値を持ちます。たとえばRPGのレベルやステータスといったものから、読み込んだ画像や音声のハンドル、アニメーションのための経過時間などさまざまなものがあります。しかし、関数内で普通に宣言された変数(auto宣言されたローカル変数)は、その関数が終了するとき、値が破棄されます(正確な内部動作は違いますが)。これでは値を記憶することが出来ません。しかし、グローバル変数はプログラムが開始した直後からプログラムが終了する直前まで値を保持します。先の変数と違い、関数が終わるとかそういったことがありませんからね(正確な内部(ry)。値を保持する方法は他にもありますが、一番簡単なのがこのグローバル変数を用いた方法だと思います。よって基盤ではこの方法を用いています。
では、アクセスが簡単とはどういうことでしょうか。グローバル変数は外部変数宣言をすることでさまざまなソースファイルからアクセスすることが出来ます。そのため、自由な記述が可能になります。グローバル変数を異なるソースファイルからアクセスするにはこの外部変数宣言が必要になります。もともとグローバル変数はただ宣言するだけだとそのソースファイル内からならどこからでもアクセスできるというもので、異なるソースファイルからはアクセスすることは出来ません。そこで、この外部変数宣言というものが必要になります。詳しくは後で書きたしますが、ただゲームを作るだけなら知る必要はありません。基盤では簡単にグローバル変数を全てのソースファイルからアクセスすることが出来るような構造を持っています。グローバル変数を足すときも簡単に出来ます。詳しくは別の項で説明しますが、global.hに見よう見まねで書き足すだけで大丈夫です。
global.hでconst宣言されているものについて
つまりこれらです。
const int White = GetColor(255,255,255); const int Black = GetColor( 0, 0, 0); const int Red = GetColor(255, 0, 0); const int Green = GetColor( 0,255, 0); const int Blue = GetColor( 0, 0,255);
const宣言された値は後から値を変更することが出来ないという性質を持ちます。つまり、定数として扱うことが出来るのです。円周率や重力加速度などをグローバル変数にしてアクセスしたとき、誤って値を書き換えたり出来ないようにします。この場合、カラーコードは書き換えられては困るもので、const宣言しています。もちろん、ここに自分で使いたい色を書き足すことも出来ます。ほかにも、文字列描画に使うフォントハンドルをここに書き足すことも有効な使い方だと思います。const宣言された変数はほかにもさまざまな特徴を持ちますが省きます。気になったら質問するなりググるなりしてください。
値を書き換えるなんてミスはしない!とか絶対に思わないでください。どんな小さなミスでもプログラムは正常に動作しなくなることが多々あります。未然に防ぐことが出来るバグは防ぐべきです。