📄 cgamecontent.cpp
字号:
#include "stdafx.h"
CGameContent::CGameContent( void )
{
//获取接口
m_pRS = (IRenderSystem*)FOXRENDERSYSTEM::GetInstance( CLD_IRENDERSYSTEM );
m_pResMgr = (IResManage*)FOXRENDERSYSTEM::GetInstance( CLD_IRESMANAGE );
m_pSoundMgr = (ISoundManage*) FOXMEDIASYSTEM::GetInstance( CLD_ISOUNDMANAGE );
//创建资源
m_pBg = m_pResMgr->CreateSprite( "gamebg.spr","SprRes/SprRes.pack" );
m_pAlpha = m_pResMgr->CreateSprite( "alpha.spr","SprRes/SprRes.pack" );
m_pFont = m_pResMgr->CreateSprite( "font.spr","SprRes/SprRes.pack" );
m_pScore = m_pResMgr->CreateSprite( "score.spr","SprRes/SprRes.pack" );
m_pSoundMgr->LoadMp3( "SoundRes/bg.mp3",SOUND_BG );
m_pSoundMgr->LoadAudio( "SoundRes/ding.wav",SOUND_DING );
m_pSoundMgr->LoadAudio( "SoundRes/leaveup.wav",SOUND_LEAVEUP );
//设置状态,设置为需要初始化状态
m_dwState = SCENE_READY;
//创建精灵角色
m_pPlayer = new CPlayer;
//创建水果管理器
m_pFruitMgr = new CFruitMgr;
}
CGameContent::~CGameContent( void )
{
//释放资源
m_pSoundMgr->StopAudio( SOUND_BG );
m_pSoundMgr->StopAudio( SOUND_DING );
m_pSoundMgr->ReleaseAudio( SOUND_BG );
m_pSoundMgr->ReleaseAudio( SOUND_DING );
SafeRelease( m_pBg );
SafeRelease( m_pAlpha );
SafeRelease( m_pFont );
//释放精灵
SafeDelete( m_pPlayer );
//释放接口
SafeRelease( m_pRS );
SafeRelease( m_pResMgr );
SafeRelease( m_pSoundMgr );
}
void CGameContent::Init( void )
{
//PLAYER位置
m_dwTheNum = 3;
//角色初始化
m_pPlayer->Init( m_pFruitMgr );
//水果管理器初始化
m_pFruitMgr->Init();
//播放背景音乐
m_pSoundMgr->PlayAudio( SOUND_BG );
//设置最后时间
m_dwLastTime = timeGetTime();
m_dwLastAddTime = timeGetTime();
m_dwLastScore = 0;
m_dwLimitTime = 5000;
}
bool CGameContent::Updata( void )
{
if( m_dwState == SCENE_READY )
{
//进行初始化
m_dwState = SCENE_LOOP;
this->Init();
}
while( m_dwState == SCENE_LOOP )
{
//检查是否为退出消息
if( CScene::Updata() == false )
{
return false;
}
//逻辑层更新
if( timeGetTime() - m_dwLastTime > GAME_FPSLIMIT )
{
//检验是否播放结束
if( !m_pSoundMgr->GetIsPlay( SOUND_BG ) )
{
//重新播放
m_pSoundMgr->SetMp3Pos( SOUND_BG,0 );
}
if( timeGetTime() - m_dwLastAddTime > m_dwLimitTime )
{
//添加一层水果
m_pFruitMgr->AddStageFruit();
m_dwLastAddTime = timeGetTime();
}
//更新
if( m_pFruitMgr->Updata() == false )
{
//GAME OVER
//修改状态为准备
CGameContent::m_dwState = SCENE_END;
CGameOver::SetState( SCENE_READY );
CGameOver::SetScore( m_pFruitMgr->GetScore() );
//停止播放音乐
m_pSoundMgr->StopAudio( SOUND_BG );
}
//重新计算时间
m_dwLastTime = timeGetTime();
}
//渲染
this->Render();
}
return true;
}
void CGameContent::Render( void )
{
//场景开始
m_pRS->BeginScene();
//绘制背景
m_pBg->SetPostion( 0,0 );
m_pBg->Draw( false );
//绘制ALPHA
m_pAlpha->SetPostion( 29 + m_dwTheNum*36,50 );
m_pAlpha->SetAlpha( 90 );
m_pAlpha->Draw( false );
//绘制水果
m_pFruitMgr->Draw();
//绘制人物
m_pPlayer->Draw();
//绘制分数
this->DrawScore();
//场景结束
m_pRS->EndScene();
}
void CGameContent::SetState( DWORD a_dwState )
{
m_dwState = a_dwState;
}
DWORD CGameContent::GetState( void )
{
return m_dwState;
}
DWORD CGameContent::m_dwState;
void CGameContent::PostMessage( DWORD a_dwMsg,char a_chWORD )
{
if( CGameContent::m_dwState != SCENE_LOOP )
{
return;
}
if( a_dwMsg == WM_KEYDOWN && m_dwTheNum > 0 && a_chWORD == VK_LEFT )
{
m_dwTheNum --;
m_pPlayer->Left();
//播放
m_pSoundMgr->PlayAudio( SOUND_DING );
}
if( a_dwMsg == WM_KEYDOWN && m_dwTheNum < 7 && a_chWORD == VK_RIGHT )
{
m_dwTheNum ++;
m_pPlayer->Right();
//播放
m_pSoundMgr->PlayAudio( SOUND_DING );
}
if( a_dwMsg == WM_KEYDOWN && a_chWORD == VK_DOWN )
{
m_pPlayer->AddFruit();
}
if( a_dwMsg == WM_KEYDOWN && a_chWORD == VK_UP )
{
m_pPlayer->ReleaseFruit();
}
}
void CGameContent::DrawScore( void )
{
DWORD dwScore = m_pFruitMgr->GetScore();
if( dwScore - m_dwLastScore > 100 )
{
//每增加100分,下降速度上升0.25
m_dwLimitTime = m_dwLimitTime - 250;
m_dwLastScore = dwScore;
m_pSoundMgr->PlayAudio( SOUND_LEAVEUP );
}
char chScore[8];
memset( chScore,'a',sizeof(char)*8 );
sprintf( chScore,"%d",dwScore );
//绘制标签
m_pScore->Draw( false );
//绘制数字
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->SetPostion( i*18+78,2 );
m_pFont->Draw( false );
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -