본문 바로가기

Programming/Mgr

상태패턴을 활용한 Game Scene 변경 매니져

게임 씬별로 나누는 것을 상태패턴으로 간단히 설명하자면

부모씬 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)
{
}


다음 글에서 매니져를 이 3개의 씬을 관리하는 매니져를 다루도록 하겠습니다 ^^

'Programming > Mgr' 카테고리의 다른 글

상태패턴을 활용한 Game Scene 변경 매니져 - 2  (0) 2013.12.03
Key 매니져  (1) 2013.11.30