게임 씬별로 나누는 것을 상태패턴으로 간단히 설명하자면
부모씬 cScene -> 자식1 cIntro
-> 자식2 cMenu
-> 자식3 cGame
이런식으로 부모를 상속받은 자식들을 만들어줍니다.
이렇게 하는 이유는 부모의 *는 자식의 *를 받을 수 있기 때문입니다.
좀 더 자세히 설명하자면
cScene* m_pScene = new cIntro; 이러한 것이 되는겁니다.
그럼 이러한 것을 활용한 매니져 소스코드를 공개하겠습니다.
부모가 될 클래스 cScene
cScene.h
#pragma once class CScene { public: CScene(void); virtual ~CScene(void); // 가상소멸자 에 주의 virtual void Init(void) =0; // virtual 함수 사용시 =0; 붙일것! virtual void Update(void) =0; virtual void Render(void) =0; virtual void Free(void) =0; };
cScene.cpp
#include "cScene.h" CScene::CScene(void) { } CScene::~CScene(void) { }
자식1 cIntro
cIntro.h
#pragma once class CIntro : public CScene { private: public: CIntro(); ~CIntro(void); void Init(void); void Update(void); void Render(void); void Free(void); };
cIntro.cpp
#include "cIntro.h" CIntro::CIntro(void) { } CIntro::~CIntro(void) { } void CIntro::Init(void) { } void CIntro::Update(void) { } void CIntro::Render(void) { } void CIntro::Free(void) { }
자식2 cMenu
cMenu.h
#pragma once class cMenu: public CScene { private: public: cMenu(); ~cMenu(void); void Init(void); void Update(void); void Render(void); void Free(void); };
cMenu.cpp
#include "cMenu.h" cMenu::cMenu(void) { } cMenu::~cMenu(void) { } void cMenu::Init(void) { } void cMenu::Update(void) { } void cMenu::Render(void) { } void cMenu::Free(void) { }
자식3 cGame
cGame.h
#pragma once class cGame: public CScene { private: public: cGame(); ~cGame(void); void Init(void); void Update(void); void Render(void); void Free(void); };
cGame.cpp
#include "cGame.h" cGame::cGame(void) { } cGame::~cGame(void) { } void cGame::Init(void) { } void cGame::Update(void) { } void cGame::Render(void) { } void cGame::Free(void) { }
'Programming > Mgr' 카테고리의 다른 글
상태패턴을 활용한 Game Scene 변경 매니져 - 2 (0) | 2013.12.03 |
---|---|
Key 매니져 (1) | 2013.11.30 |