📄 cplayer.cpp
字号:
#include "stdafx.h"
CPlayer::CPlayer( void )
:m_dwPlayerNum( 3 )
,m_dwHaveFruitNum( 0 )
,m_dwFruitID( -1 )
{
//获取接口
m_pResMgr = (IResManage*)FOXRENDERSYSTEM::GetInstance( CLD_IRESMANAGE );
//创建资源
m_pPlayer = m_pResMgr->CreateSprite( "player.spr","SprRes/SprRes.pack" );
m_pFruit = m_pResMgr->CreateSprite( "fruit.spr","SprRes/SprRes.pack" );
}
CPlayer::~CPlayer( void )
{
//释放资源
SafeRelease( m_pPlayer );
SafeRelease( m_pFruit );
//释放接口
SafeRelease( m_pResMgr );
}
void CPlayer::AddFruit( void )
{
FruitState* pState = NULL;
for( int y=12;y>=0;y-- )
{
pState = m_pMgr->GetState( m_dwPlayerNum,y );
//状态为常态
if( pState->m_dwState == FRUIT_STATE_OLD || pState->m_dwState == FRUIT_STATE_NEW )
{
//寻找第一个
if( m_dwFruitID == -1 )
{
m_dwFruitID = pState->m_dwFruitID;
m_dwHaveFruitNum = 1;
//修改水果状态
pState->m_dwState = FRUIT_STATE_DOWN;
pState->m_dwDestY = 380 - 10 * m_dwHaveFruitNum;
pState->m_dwAlpha = 255;
}
else
{
//寻找于第一个相同的
if( m_dwFruitID == pState->m_dwFruitID )
{
m_dwHaveFruitNum ++;
pState->m_dwState = FRUIT_STATE_DOWN;
pState->m_dwDestY = 380 - 10 * m_dwHaveFruitNum;
}
else
{
return;
}
}
}
}
}
void CPlayer::ReleaseFruit( void )
{
FruitState* pState = NULL;
for( int y=0;y<13;y++ )
{
pState = m_pMgr->GetState( m_dwPlayerNum,y );
//状态为空
if( pState->m_dwState == FRUIT_STATE_NULL || pState->m_dwState == FRUIT_STATE_END )
{
DWORD total = y + m_dwHaveFruitNum;
if( total>13 ){
total = 13;
}
//给管理器添加水果
for( ;y<total;y++ )
{
pState = m_pMgr->GetState( m_dwPlayerNum,y );
pState->m_dwState = FRUIT_STATE_UP;
pState->m_dwAlpha = 255;
pState->m_dwX = 45 + m_dwPlayerNum*36;
pState->m_dwY = 380 - 10 * ( y - total + m_dwHaveFruitNum );
pState->m_dwDestY = 80 + y*24;
pState->m_dwFruitID = m_dwFruitID;
}
//清空
m_dwFruitID = -1;
m_dwHaveFruitNum = 0;
return;
}
}
}
void CPlayer::Left( void )
{
m_dwPlayerNum--;
}
void CPlayer::Right( void )
{
m_dwPlayerNum++;
}
void CPlayer::Draw( void )
{
//渲染人物
if( m_dwHaveFruitNum > 0 )
{
m_pPlayer->SetCurrentNum( 1 );
}
else
{
m_pPlayer->SetCurrentNum( 0 );
}
m_pPlayer->SetPostion( 45 + m_dwPlayerNum*36,400 );
m_pPlayer->Draw( true );
//渲染水果
for( int i=0;i<m_dwHaveFruitNum;i++ )
{
m_pFruit->SetCurrentNum( m_dwFruitID );
m_pFruit->SetPostion( 45 + m_dwPlayerNum*36,380 - 10 * i );
m_pFruit->Draw( true );
}
}
void CPlayer::Init( CFruitMgr* a_pMgr )
{
m_dwPlayerNum = 3;
m_dwHaveFruitNum = 0;
m_dwFruitID = -1;
//管理器指针
m_pMgr = a_pMgr;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -