■ 新・ゲーム開発講座 |
■ へっぽこプログラミング入門♪ |
■第26夜:イベントフラグ さて前回まででお絵描きの時間はひとまず終りました。これからしばらくは「よりゲームらしい内容」ということで、フラグ、分岐、ラベルジャンプ、選択肢といった少し構造的な部分の話を進めていきたいと思います。
■処理の概要 特に難しい内容はありません。コマンドパラメータに応じて、イベントフラグ(配列で用意しておきます)の値をON/OFFしているだけです。 ■Mode_stat main.h の 構造体 Mode_stat にイベントフラグを追加します。とりあえず256個もあれば充分でしょう。フラグはON/OFFの2値しか取らない予定なので bool 型でも良さそうですが、VC++5以降では bool 型変数はサイズ的には結局 char なので、ここでは char で宣言しておきます。余談ですが古いVC++(4.2)では bool は int と同じサイズ=4バイトなので、コンパイラのバージョンによって4倍ものサイズ差が生じてしまいます(・・・やれやれ ^^)。 |
#define EVENT_FLAG_MAX 256 struct _Mode_stat {
|
■フラグの初期値 フラグの初期値としては OFF を採用したい(イベントが起きてもいないのにフラグがONでは困る)ので、テキストエンジンの初期化のときに一緒にOFFに初期化してしまいましょう。デフォルトパラメータを決めている
_Set_Default_params() に、以下のリストのような追加を行います。 |
void _Set_Default_params() {
|
■コマンド解釈部 TextEngine.cpp の void Command_call() に以下の部分を加えます。 void Command_call()
|
■コマンド実行部 やっていることは至極単純ですね(なんか最近単純ばっかりだなぁ ^^;)。フラグの番号をコマンドパラメータから解釈して、ON/OFF、あるいは表示しているだけです。フラグ番号がMAX値を越えていないか、という最低限のチェックしかしていませんが、まさか負の番号を指定するスクリプターは・・・いないことを祈りましょう(爆) 気になる方はもうすこしエラーチェックをがんばってみるのも良いでしょう。 |
//---------------------------------------------- int Com_flag_on()
} //---------------------------------------------- int Com_flag_off()
//---------------------------------------------- int Com_disp_flag()
|
ソースはこちらになりますので、実行して動作を確認してみて下さい。次回は if 文での条件分岐を解説します。 |