最後、クリア判定をする。
クリア判定は、実は簡単で、ステージの初期状態にには、必ず以下のような設定がある。
したがって、クリア条件は単純に、すべての荷物がゴールに運ばれたかどうかである。
ゲームプログラム内で、荷物はLUGG、ゴールはGOAL、ゴールの上の荷物はLUGG_ON_GOALで表される。
つまり、すべてのLUGGが、LUGG_ON_GOALに変更されていれば、ゲームクリア状態である。
この状態を調べるのは簡単で、LUGGはLUGG_ON_GOAL以外には変化しないので、
である。
bool CheckClear(Map& _map)
{
for (int j = 0; j < _map.stage_height; j++)
{
for (int i = 0; i < _map.stage_width; i++)
{
if (荷物があったら)
return(false);
}
};
return true;
}
動作確認のために、DrawUpdateをクリアしていなかったら入力を促すメッセージ、クリアしていたらおめでとうメッセージ、を表示するように改良する
//どっかにグローバル変数で以下を設定
bool GAME_CLEAR = false;
void DrawPlay()
{
system("cls");
DrawStage(sampleStage);
if (GAME_CLEAR)
cout << "GAME_CLEAR!!!" << endl;
else
cout << "Input wasd to Move Costco M@n" << endl;
}
これで、ステージの読み込み、キャラクタの移動、ゲームクリアの判定、までできるようになった。
あとは、
などの要素が考えられる
これらは、グラフィックス版にゆだねてしまおう。