📄 cgameover.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 + -