Click here to Skip to main content
15,896,606 members
Articles / Desktop Programming / MFC

State Pattern in C++ Applications

Rate me:
Please Sign up or sign in to vote.
4.68/5 (31 votes)
13 Sep 20014 min read 179K   2.6K   85  
Small game framework based on the state pattern
// HighScoreState.cpp: implementation of the CHighScoreState class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "StatePattern_Game.h"
#include "HighScoreState.h"
#include "IntroductionState.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

CHighScoreState CHighScoreState::m_HighScoreState;

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CHighScoreState::CHighScoreState()
{

}

CHighScoreState::~CHighScoreState()
{

}

CHighScoreState* CHighScoreState::Instance()
{
	return ( &m_HighScoreState );
}

void CHighScoreState::KeyboardEvent(CGameManager * pManager, char nKey)
{
	switch ( nKey )
	{
	case VK_F1:
		TRACE("* HighScore State changed the current state to Introduction State\n");
		ChangeState(pManager, CIntroductionState::Instance());
		break;
	}
}

void CHighScoreState::Update(CGameManager * pManager)
{

}

void CHighScoreState::Draw(CGameManager * pManager, CDC * pDC)
{
	CRect tmpRect = m_Rect;
	CFont* pOldFont = pDC->SelectObject(&m_TextFont);
	pDC->FillSolidRect(m_Rect, RGB(0,0,0));

	pDC->SetBkMode(TRANSPARENT);
	pDC->SetTextColor(RGB(255,255,0));
	pDC->DrawText("Highscores!!!", m_Rect, DT_VCENTER|DT_CENTER|DT_SINGLELINE);

	tmpRect.top += (tmpRect.Height()/2) - 80;
	pDC->DrawText("Press F1 for the Main Menu", tmpRect, DT_CENTER|DT_SINGLELINE);


	// clean up...
	pDC->SelectObject(pOldFont);
}

void CHighScoreState::Resize()
{

}

void CHighScoreState::Init()
{
	if ( (HFONT) m_TextFont )
		m_TextFont.DeleteObject();
	m_TextFont.CreatePointFont(160, "Arial");

	TRACE("* Initializing HighScore State\n");
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.


Written By
Web Developer
Canada Canada
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions