⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cgameover.cpp

📁 fruitwar and engine
💻 CPP
字号:
#include "stdafx.h"
#include <string>

CGameOver::CGameOver( void )
{
	//获取接口
	m_pRS		= (IRenderSystem*)FOXRENDERSYSTEM::GetInstance( CLD_IRENDERSYSTEM );
	m_pResMgr	= (IResManage*)FOXRENDERSYSTEM::GetInstance( CLD_IRESMANAGE );
	m_pGuiMgr	= (IGuiManage*)FOXRENDERSYSTEM::GetInstance( CLD_IGUIMANAGE );
	m_pSoundMgr	= (ISoundManage*) FOXMEDIASYSTEM::GetInstance( CLD_ISOUNDMANAGE );

	//创建按钮
	POINT sPt;
	sPt.x		= 90;
	sPt.y		= 320;
	m_pButton1	= m_pGuiMgr->CreateButton( "Button1",sPt,"button1.spr","SprRes/SprRes.pack" );
	sPt.x		= 90;
	sPt.y		= 354;
	m_pButton2	= m_pGuiMgr->CreateButton( "Button2",sPt,"button2.spr","SprRes/SprRes.pack" );
	//添加按钮进管理器
	m_pGuiMgr->AddToGuiManage( (void*)m_pButton1 );
	m_pGuiMgr->AddToGuiManage( (void*)m_pButton2 );

	//创建背景
	m_pBg		= m_pResMgr->CreateSprite( "gameover.spr","SprRes/SprRes.pack" );
	m_pFont		= m_pResMgr->CreateSprite( "font.spr","SprRes/SprRes.pack" );

	//读取音乐
	m_pSoundMgr->LoadAudio( "SoundRes/end.wav",SOUND_END );
}

CGameOver::~CGameOver( void )
{
	//释放资源
	SafeRelease( m_pButton1 );
	SafeRelease( m_pButton2 );
	SafeRelease( m_pBg );
	SafeRelease( m_pFont );

	//释放接口
	SafeRelease( m_pRS );
	SafeRelease( m_pResMgr );
	SafeRelease( m_pGuiMgr );
}

void CGameOver::SetState( DWORD a_dwState )
{
	m_dwState = a_dwState;
}

DWORD CGameOver::GetState( void )
{
	return m_dwState;
}

DWORD CGameOver::m_dwState = SCENE_END;

DWORD CGameOver::m_dwScore = 0;

void CGameOver::SetScore( DWORD a_dwScore )
{
	m_dwScore = a_dwScore;
}

void CGameOver::Init( void )
{
	CGameOver::m_dwState = SCENE_LOOP;
	//播放音乐
	if( !m_pSoundMgr->GetIsPlay( SOUND_END ) )
	{
		m_pSoundMgr->PlayAudio( SOUND_END );
	}
}

void CGameOver::PostMessage( DWORD a_dwMsg,char a_chWORD )
{
	if( CGameOver::m_dwState != SCENE_LOOP )
	{
		return;
	}
	
	//发送消息
	m_pGuiMgr->PostMessage( a_dwMsg,a_chWORD );
	
	//消息处理
	this->MsgProc();
}

void CGameOver::MsgProc( void )
{
	//消息处理
	IMessage	sMsg;
	
	//获取控件消息
	m_pGuiMgr->DispatchMessage( sMsg );
	
	//UPLOAD按钮被点击
	if( ( sMsg.s_dwMsg == WM_LBUTTONDOWN ) && ( strcmp( sMsg.s_strName,"Button1" ) == 0 ) )
	{
		string strURL="http://www.ukton.com/fruitgame/index.asp?game=";
		char strScore[5];
		memset( strScore,'a',sizeof(char)*5 );

		sprintf( strScore,"%d",m_dwScore );
		//计算位数
		for( int i=0;i<5;i++ )
		{
			if( strScore[i] == 'a' || strScore[i] == '\0' )
			{
				break;
			}
		}
		string strEnd;//后缀
		//产生随即数字
		srand(timeGetTime());
		for( int x=0;x<i+1;x++ )
		{
			char ch = strScore[x];
			strEnd = strEnd + ch;
			for( int y=0;y<50;y++ )
			{
				ch = rand() % (120 - 65) + 65;
				strEnd = strEnd + ch;
			}
		}
		//获取最后URL
		strURL = strURL + strEnd;
		//调用浏览器
		ShellExecute( NULL, "open", strURL.begin(), NULL, NULL, SW_SHOWNORMAL ); 
	}
	//REPLAY按钮被点击
	if( ( sMsg.s_dwMsg == WM_LBUTTONDOWN ) && ( strcmp( sMsg.s_strName,"Button2" ) == 0 ) )
	{
		//修改状态为准备
		CGameOver::m_dwState = SCENE_END;
		CGameContent::SetState( SCENE_READY );
	}

	//默认消息处理
	m_pGuiMgr->DefMsgProc();
}

bool CGameOver::Updata( void )
{
	//需要初始化
	if( m_dwState == SCENE_READY )
	{
		//初始化
		this->Init();
	}
	while( CGameOver::m_dwState == SCENE_LOOP )
	{
		//判断是否有退出消息
		if( CScene::Updata() == false )
		{
			return false;
		}
		//渲染
		this->Render();
	}
	return true;
}

void CGameOver::Render( void )
{
	m_pRS->BeginScene();

	//绘制背景
	m_pBg->Draw( false );

	//绘制分数
	char chScore[8];
	memset( chScore,'a',sizeof(char)*8 );
	sprintf( chScore,"%d",m_dwScore );
	DWORD dwCount = 0;
	for( int i=7;i>=0;i-- )
	{
		if( chScore[i] != 'a' && chScore[i] != '\0')
		{
			char ch = chScore[i];
			m_pFont->SetCurrentNum( atoi(&ch) );
			m_pFont->SetCurrentNum( atoi(&ch) );
			m_pFont->SetPostion( 212-dwCount*18,200 );
			m_pFont->Draw( false );
			dwCount++;
		}
	}

	//绘制GUI
	m_pGuiMgr->DrawAll();

	m_pRS->EndScene();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -