第20回:ゲームの完成だ!
前回までに作成した、各クラスをメインルーチンに組み込めば、ゲームは完成です。
#include "Mode.h"
void CPlayer::Destroy()
{
destroyed = true;
((CSound*)FindItemBox("explode2"))->Play();
AppendObject(new CExplosion(x, y), EXPLOSION_PRIORITY, true);
// ゲームオーバー画面を表示
AppendObject(new CContinue(false), CONTINUE_PRIORITY, true);
}
#include "Mode.h"
void CBoss::Exec()
{
switch(status){
case boss_pattern1: Action1(); break;
case boss_pattern2: Action2(); break;
case boss_pattern3: Action3(); break;
default:
if(ActionDestroy() == true){
// ゲームクリアー画面を表示
AppendObject(new CContinue(true), CONTINUE_PRIORITY, true);
// 完了フラグが返されたら自身を消去
RemoveObject(this);
return;
}
}
/* 省略 */
}
#include "GameDef.h"
#include "Mode.h"
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
/* 省略 */
}
int APIENTRY _tWinMain
(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpszCmdLine, int nCmdShow)
{
timeBeginPeriod(1);
/* 省略 */
CGameObject game;
CoInitialize(NULL);
game.Initialize(mainWnd, hInstance);
CSound::CreateDirectSound(mainWnd);
game.AppendObject(new CTaskHead(), 0, true);
game.AppendObject(new CTaskTail(), INT_MAX, true);
game.AppendObject(new CTitle(), 1, true);
ShowWindow(mainWnd, nCmdShow);
/* 省略 */
game.Uninitialize();
CSound::ReleaseDirectSound();
CoUninitialize();
return 0;
}
「ゲームで学ぶC++オブジェクトプログラミング・実践編」、いかがだったでしょうか。それではごきげんよう!