クリア判定、など

最後、クリア判定をする。
クリア判定は、実は簡単で、ステージの初期状態にには、必ず以下のような設定がある。

したがって、クリア条件は単純に、すべての荷物がゴールに運ばれたかどうかである。

ゲームプログラム内で、荷物はLUGG、ゴールはGOAL、ゴールの上の荷物はLUGG_ON_GOALで表される。
つまり、すべてのLUGGが、LUGG_ON_GOALに変更されていれば、ゲームクリア状態である。
この状態を調べるのは簡単で、LUGGはLUGG_ON_GOAL以外には変化しないので、

である。

Listing. 1: クリアチェック関数の作成
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をクリアしていなかったら入力を促すメッセージ、クリアしていたらおめでとうメッセージ、を表示するように改良する

Listing. 2: クリアチェックできているか確認
//どっかにグローバル変数で以下を設定
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;

}

今後のこと

これで、ステージの読み込み、キャラクタの移動、ゲームクリアの判定、までできるようになった。
あとは、

などの要素が考えられる
これらは、グラフィックス版にゆだねてしまおう。