Appearance
第07回 ゲームの状態と終了条件
3 / 4 リセットと結果画面を追加する
このステップの目的
ゲーム開始時に既存のオブジェクトを初期化し、結果画面から再開できるようにする
StartGameへ初期化を集める
リトライ時にPlayerや各Managerを個別に初期化すると、呼び出し漏れが起こります。 ゲームを開始する処理をStartGame()へ集め、既存のReset()を順番に呼びます。
Game.cppcpp
void Game::StartGame()
{
player.Reset();
playerShots.Reset();
enemies.Reset();
enemyShots.Reset();
playTime = 0.0f;
timeLeft = tuning::game::TimeLimit;
score = 0;
ChangeState(State::Playing);
}ここで新しい初期化方式を作るのではなく、第02〜06回で各クラスへ用意したReset()を利用します。
結果を表示する
GameClearとGameOverでは、最後のプレイ画面を背景に残し、その上へ結果を描きます。 プレイ中の状態を別のデータへコピーせず、現在のオブジェクトを描画します。
チェックリスト
- リトライでPlayerとすべてのManagerが初期化される
- 得点と残り時間が開始値へ戻る
- クリアとゲームオーバーを別の結果として表示できる