代码

1.       CChess.h
#ifndef        CHESS_H
#define        CHESS_H
 
 
#define        C_ChessWidth 16
#define        C_ChessHeight 16
#define        C_ChessM2     -1   // 乘以二的chess
 
#define        C_StartPosX        8
#define        C_StartPosY        0
 
#define        C_ChessNumX        10   // 每行的chess个数
#define        C_ChessNumY        10   // 美列的chess个数
 
#include "glob.h"
 
 
class CChess
{
 
private :
    
     CGTimer * m_Timer;
     TPoint ComputPos( TInt aIndex );
     TRect ComputRect();
 
     enum EChessState
     {
         TSelected,
         TRemoved,
         TNormal,
         TBomb,
     };
    
     TInt          m_Num;
     TInt          m_Index; // 在棋盘中的位置。
     TInt          m_choosenIndex;
    
     EChessState        m_state;
    
     CImage             * m_NumImages[3];
 
     TInt          m_SelectNo; // 被选中的序号
    
public :
     TInt GetNum();
     TBool IsAlive();
     CChess( TInt aNum, TInt aIndex, CImage * aNumsImage[3], CGTimer * aTimer );
 
 
     TInt GetIndex(){ return m_Index; };
 
 
 
     TInt Render ( CFbsBitmap * aBmp );
     TBool select( TInt & aSelectNums );
     void remove();
     // 返回这个方块被选中的数
     TInt GetSelectIndex(void);
 
     void ResetChess();
 
 
     void DrawBomb1( CFbsBitmap * aBmp );
     void DrawBomb2( CFbsBitmap * aBmp );
 
};
 
 
#endif
 
2.      CChess.cpp
 
#include "chess.h"
 
 
CChess::CChess( TInt aNum, TInt aIndex, CImage * aNumsImage[3], CGTimer * aTimer )
{
     m_state = TNormal;
 
//   m_bSelect = EFalse;
 
     m_Num    = aNum;
     m_Index =aIndex;
 
     for ( TInt i = 0; i < 3; i++ ) {
         m_NumImages[i] = aNumsImage[i];
     }
     m_Timer = aTimer;
 
     m_SelectNo    = -1;
 
 
}
 
void CChess::remove()
{
     // m_state = TBomb;
     m_state = TRemoved;
}
 
 
 
TBool CChess::select( TInt & aSelectNums )
{
     if ( m_state == TSelected ) {
         m_SelectNo    = -1;
         aSelectNums --;
         m_state = TNormal;
         return EFalse;
     }
     else if ( m_state == TNormal ) {
         m_SelectNo    = aSelectNums;
         aSelectNums ++;
         m_state = TSelected;
         return ETrue;
        
     }
     //return ( m_state & TSelected );
 
}
 
// aIndex 是在容器中的位置
TInt CChess::Render( CFbsBitmap* aBmp )
{
     int i; i = 0;
     switch ( m_state )
     {
         case TNormal:
              m_NumImages[0]->RenderToBitmapL( aBmp, ComputPos(m_Index), ComputRect() );
              break;
        
         case TSelected:
              m_NumImages[1]->RenderToBitmapL( aBmp, ComputPos(m_Index), ComputRect() );
              break;
        
         case TRemoved:
              return 0;
              break;
 
         case TBomb:
    
              return 0;
              break;
     }
     return 1;
}
 
// 不负责计算爆炸图片
TRect CChess::ComputRect()
{
     if ( m_Num >=1 ) {
         return TRect( TPoint(C_ChessWidth * m_Num, 0), TSize(C_ChessWidth,C_ChessHeight) );
     }
     else if ( m_Num = C_ChessM2 ) {
         return TRect ( 0, 0, C_ChessWidth, C_ChessHeight );
     }
}
 
 
TPoint CChess::ComputPos( TInt aIndex )
{
     // 行列的计数都是从0 开始的
     TInt x = aIndex % C_ChessNumX;        // 每行8个元素
     TInt y = aIndex / C_ChessNumY;        // 每列8个元素
    
 
     return TPoint(     C_ChessWidth * x + C_StartPosX,
                       C_ChessHeight * y + C_StartPosY );
 
}   
 
 
TBool CChess::IsAlive()
{
     if ( m_state != TBomb && m_state != TRemoved ) {
         return ETrue;
     }
     else
     {
         return EFalse;
     }
}
 
 
TInt CChess::GetNum()
{
     return m_Num;
}
 
TInt CChess::GetSelectIndex(void)
{
     return m_SelectNo;
}
 
void CChess::ResetChess()
{
     m_state = TNormal;
     m_SelectNo    = -1;
}
 
 
void CChess::DrawBomb1( CFbsBitmap * aBmp )
{
     if ( m_NumImages[2] == NULL ) {
         return;
     }
     m_NumImages[2]->RenderToBitmapL( aBmp, ComputPos(m_Index) - TPoint(2,1),
                                               TRect( 0, 0, C_ChessWidth, C_ChessHeight ) );
}
        
 
void CChess::DrawBomb2( CFbsBitmap * aBmp )
{
     if ( m_NumImages[2] == NULL ) {
         return;
     }
     m_NumImages[2]->RenderToBitmapL( aBmp, ComputPos(m_Index) - TPoint(2,1),
                                               TRect( C_ChessWidth, 0, C_ChessWidth * 2, C_ChessHeight ) );
}
 
 
 
3.      CChessBoard.h
 
#ifndef       CHESSBOARD_H
#define        CHESSBOARD_H
 
#include "glob.h"
#include "chess.h"
#include "face.h"
#include "LaneTimer.h"
#include "ShortTimer.h"
#include "Cur.h"
#include "TargetNum.h"
#include "calculate.h"
#include "dialog.h"
#include "GFile.h"
#include "SoundPlayer.h"
 
 
class CChessBoard
{
private :
 
     enum EGameState {
         TIntroduce,
         TNew,
         TRun,
         TPause,
         TResume,
         TPassLeave,
         TGameOver,
         TWin,
         TShowScore,
         TShowHiS,
         TDoHiS,
    
     };
 
 
     EGameState    m_GameState;
 
 
     TBool    m_bGetHi; //  是否获得最高分
 
     CArrayPtrFlat<CChess>       * m_AliveChessList;    // 让然存在的方块指针数组,用于产生目标数字
     CArrayPtrFlat<CChess>       * m_BombChessList; // 保存要爆炸的图像文件
     CArrayPtrFlat<CChess>       * m_WaitKillChessList; // 选中的方块数组,用于按顺序消去
 
     void     RemoveChess ( TInt aChessIndex );   // 删除一个方块对象
     TInt     RandomChess();                            // 随即产生方块
     CChess        ** m_chess;            // 方块
     CImage        * m_ChessImage[3]; // 方块图片
     CImage        * m_BackGround;        // 背景
 
     CFace         * m_Face;          // 笑脸
     CGTimer       * m_pAniTimer;         // 动画的Timer
     CShortTimer   * m_ShortTimer;        // 10 秒倒计时的Timer;
     CLaneTimer    * m_pNumTimer;         // 总共倒计时
     CLaneCur * m_Cur;           // 选取框
     CTargetNum    * m_TargetNum;         // 目标数字
     TKeyHandler * m_KeyHandler;      // 输入控制器
     TInt     m_NumsList[10];        // 数字索引
     TInt64        m_iSeed;
     TInt     m_Leave;           // 游戏关卡
 
     TInt     m_Score;           // 玩家得分
     TInt     m_HighScore;       // 最高分纪录。
 
     CSoundPlayer * m_SoundPlayer;
 
    
     //
    
 
 
public :
     CDialog       * m_pDlg;
private :
 
 
 
     TInt GameRun( CFbsBitGc* aCallerGc, CFbsBitmap* aBmp );
     TInt GameOver ( CFbsBitGc* aCallerGc, CFbsBitmap* aBmp, TBool aWin = EFalse );
     TInt ShowSroce( CFbsBitGc* aCallerGc, CFbsBitmap* aBmp );
     TInt ShowHiS( CFbsBitGc* aCallerGc, CFbsBitmap* aBmp );
     TInt ShowDoHiS( CFbsBitGc* aCallerGc, CFbsBitmap* aBmp );
     TInt Win( CFbsBitGc* aCallerGc, CFbsBitmap* aBmp );
    
public
     void PassLeave();
     void GameStart();
     void SetLeave( TInt aLevel );
     void ConstructL();
     CChessBoard(TKeyHandler * aKeyHandler);
     ~CChessBoard();
 
     void RenderBomb( CFbsBitmap* aBmp );
 
 
     TInt Render ( CFbsBitGc* aCallerGc, CFbsBitmap* aBmp );
 
     void NewGame();
 
 
     void EnableSound( TBool aAble );
 
 
 
     void Pause();
 
     void Resume();
};
 
 
#endif
 
4.      CChessboard.cpp
 
#include "ChessBoard.h"
 
CChessBoard::CChessBoard( TKeyHandler * aKeyHandler )
{
     m_NumsList[9]      = -1;    // -1 为乘2的棋子
     for ( TInt i = 0; i < 9; i ++ ) {
         m_NumsList[i] = i+1;   // 1 ~ 9
     }
 
     m_chess = NULL;
     for ( i = 0; i < 3; i ++ ) {
         m_ChessImage[i] = NULL ;
     }
     m_BackGround       = NULL;
     m_Face                 = NULL;
     m_pAniTimer            = NULL;
     m_pNumTimer            = NULL;
     m_Cur                  = NULL;
     m_ShortTimer       = NULL;
     m_AliveChessList   = NULL;
     m_BombChessList        = NULL;
     m_WaitKillChessList    = NULL;
     m_TargetNum            = NULL;
     m_KeyHandler       = aKeyHandler;
 
 
     m_Leave                = 1;
 
 
 
     m_HighScore            = 0;
     m_Score                = 0;
     m_pDlg                 = NULL;      
     m_bGetHi           = EFalse;
 
     //
     m_SoundPlayer      = NULL;
}
 
CChessBoard::~CChessBoard()
{
     for ( TInt i = 0; i < C_ChessNumX * C_ChessNumY; i ++ ) {
         if ( m_chess[i] )      delete m_chess[i];
     }
     delete[] m_chess;
     for ( i = 0; i < 3; i ++ ) {
         delete m_ChessImage[i] ;
     }
     if ( m_BackGround )         delete m_BackGround;
     if ( m_Face )                    delete m_Face;
     if ( m_pAniTimer )          delete m_pAniTimer;
     if ( m_pNumTimer )               delete m_pNumTimer;
     if ( m_ShortTimer )         delete   m_ShortTimer;
     if ( m_Cur )                delete m_Cur;
     if ( m_AliveChessList )     delete   m_AliveChessList;
     if ( m_BombChessList )      delete m_BombChessList;
     if ( m_WaitKillChessList ) delete m_WaitKillChessList;
     if ( m_TargetNum )               delete   m_TargetNum;
     if ( m_pDlg )               delete m_pDlg;
 
 
     if ( m_SoundPlayer )        delete m_SoundPlayer;
}
 
// 构造游戏需要的资源
void CChessBoard::ConstructL()
{
     // 背景
     m_BackGround = CImage::NewL( _L("res.mbm"), 0, ETrue, 0xffff );
     m_Face = new CFace;
     m_pAniTimer   = new CGTimer();
     m_pAniTimer->ConstructL();
     m_pAniTimer->Stop();
     // 正常的chess
     m_ChessImage[0] = CImage::NewL( _L("res.mbm"), 3, ETrue, 0xfff );
     // 被选中的chess
     m_ChessImage[1] = CImage::NewL( _L("res.mbm"), 4, ETrue, 0xfff );
     // 爆炸
     m_ChessImage[2] = CImage::NewL( _L("res.mbm"), 5, ETrue, 0xfff );
     m_chess = new CChess * [C_ChessNumX * C_ChessNumY];
     for ( TInt i = 0; i < C_ChessNumX * C_ChessNumY; i ++ ) {
         m_chess[i]    = NULL;
     }
     m_pNumTimer = new CLaneTimer;
     m_WaitKillChessList = new (ELeave) CArrayPtrFlat<CChess> ( 50 );
     m_AliveChessList = new (ELeave) CArrayPtrFlat<CChess> ( C_ChessNumX * C_ChessNumY );
     m_BombChessList = new (ELeave) CArrayPtrFlat<CChess> ( C_ChessNumX * C_ChessNumY );
     m_Cur = new CLaneCur( m_KeyHandler, m_chess, C_ChessNumX * C_ChessNumY, m_WaitKillChessList );
     m_TargetNum = new CTargetNum();
     m_pDlg        = CDialog::NewL();
    
    
    
     // 读取最高分。
 
 
#ifdef  __WINS__
     CGFile* file = CGFile::NewL(_L("c://HiS.sc"), EFileRead | EFileShareAny);
#else
     CGFile* file = CGFile::NewL(_L("HiS.sc"), EFileRead | EFileShareAny);
#endif
     file->ReadL((TText8*) & m_HighScore, sizeof(TInt));
     delete file;
 
 
     m_SoundPlayer =    CSoundPlayer::NewL();
    
 
 
//   m_GameState = TShowScore;
//   break;
//                 case -2:
//                     m_GameState = TDoHiS;
 
     m_GameState = TNew;
     //   m_GameState = TIntroduce;
}
 
// 数据计算跟渲染
TInt CChessBoard::Render( CFbsBitGc* aCallerGc, CFbsBitmap* aBmp )
{
     switch( m_GameState ) {
 
         case TIntroduce:
              break;
 
         case TNew:
              GameStart();
              m_GameState = TRun;
              break;
 
         case TRun:
              switch ( GameRun( aCallerGc, aBmp ) ) {
                   case -1414:   // gameover
                       m_pDlg->Reset();
                       m_GameState = TGameOver;
                       break;
                   case 8888:    // 过关
                       if ( m_Leave < 3 ) {   // not win
                            m_pDlg->Reset();
                            m_GameState = TPassLeave;
                       }
                       else {        // win
                            m_pDlg->Reset();
                            m_GameState = TWin;
                       }
                       break;
                   case 3:
                       break;
                   default:
                       break;
              }
 
              break;
 
         case TPassLeave:
              m_pDlg->PassLeave();
              m_pDlg->Render(aCallerGc, aBmp);
              if ( m_KeyHandler->IsDown(53) || m_KeyHandler->IsDown(167) ) {
                   PassLeave();
              //   m_pDlg->Nothing();
                   m_pDlg->Reset();
                   m_GameState = TRun;
              }
              m_KeyHandler->Reset();
              break;
 
         case TPause:
              // Pause();
              break;
 
         case TShowScore:
              if ( ShowSroce( aCallerGc, aBmp ) == -1414 ) {
                   return -1414;
              }
              m_KeyHandler->Reset();
              break;  
 
         case TResume:
              // Resume();
              m_GameState = TRun;
              break;
 
         case TGameOver:
              switch ( GameOver( aCallerGc, aBmp ) ) { // 对画框结束
                   case -1:
                       m_GameState = TShowScore;
                       break;
                   case -2:
                       m_GameState = TDoHiS;
                       break;
                       }
 
              m_KeyHandler->Reset();
              break;
 
         case TShowHiS:
              if ( ShowHiS( aCallerGc, aBmp ) == -1 ) {
                   return -1414;
              }
              break;
         case TDoHiS:
              if ( ShowDoHiS(aCallerGc, aBmp) == -1 ) {
                   return -1414;
              }
              break;
 
         case TWin:
              switch ( GameOver( aCallerGc, aBmp, ETrue ) ) {    // 对画框结束
                   case -1:
                       m_GameState = TShowScore;
                       break;
                   case -2:
                       m_GameState = TDoHiS;
                       break;
              }
 
              // return     9999;         // 过全关
              break;
     }
     return 1;
 
 
}
 
TInt CChessBoard::GameRun( CFbsBitGc* aCallerGc, CFbsBitmap* aBmp )
{
 
 
     // 1 ,绘制背景
     m_BackGround->RenderToBitmapL( aBmp, TPoint(0,0) );
 
 
     for ( TInt i = 0; i < m_AliveChessList->Count(); i ++ ) {
         m_AliveChessList->At(i)->Render( aBmp );
     }
 
     RenderBomb(aBmp);
 
 
     // 2 ,绘制选择框
     // 先绘制选择框--里面计算了拾取的哪个方块,该函数返回一共选择了多少个。
     // 用temp带到计算类型中。更新数据。根据返回数值进行下一步的操作。
     TInt & temp = m_Cur->Render(aBmp);   
 
 
 
     TInt CResult = CCalculate::UpdateCalcu( m_chess, temp, m_AliveChessList, m_TargetNum->GetTarNum(), m_BombChessList ,
         m_WaitKillChessList, m_Score );
 
     if ( CResult == -1 ) {     // 正确,消去方块
         m_TargetNum->ComputeTarNum( m_AliveChessList );
         m_Face->Smile();
         m_pAniTimer->Stop();
         m_pAniTimer->Play();
         m_ShortTimer->Stop();
         m_ShortTimer->Play();
         m_SoundPlayer->Bomb();      // 爆炸~~~~
     }
 
 
     else if ( CResult == -2 ) { // 错误,扣时间
         m_Face->Cry();
         m_pNumTimer->SubTime(1000);
     }
     m_TargetNum->Render(aBmp);
 
     // 4 ,先绘制短时间的倒计时---返回是否超时
     // 根据短倒计时计时器是否超时,决定是否增减1秒
     if ( m_ShortTimer->Render( aCallerGc, aBmp ) == 1 ) { // 短计时器超时了
         m_pNumTimer->SubTime(1000);
         m_Face->Cry();
     }
 
     // 3 ,绘制方块-----根据方块的选择情况绘制
 
//   for ( TInt i = 0; i < m_AliveChessList->Count(); i ++ ) {
//       m_AliveChessList->At(i)->Render( aBmp );
//   }
 
//   RenderBomb(aBmp);
 
     // 6 ,根据最后情况绘制笑脸、哭脸
     m_Face->Render( aBmp ); // 放在最后
     if ( m_AliveChessList->Count() == 0 ) {                 // 本关胜利
     //   TInt s = m_pNumTimer->GetLastTime();
         m_Score += m_pNumTimer->GetLastTime() / 1000 ;
         m_SoundPlayer->PassLeave();
         return 8888;
     }
 
 
 
 
 
 
     // 5 ,总计时器
     if ( m_pNumTimer->Render( aCallerGc, aBmp ) == -1 ) {   // 时间用完了,游戏结束
         m_SoundPlayer->Fail();
         return   -1414;
     }
     return 1;
}
 
TInt CChessBoard::GameOver ( CFbsBitGc* aCallerGc, CFbsBitmap* aBmp, TBool aWin )
{
     m_Score = m_Score > 99999 ? 99999 : m_Score;
     if ( m_Score > m_HighScore ) {
         m_HighScore   = m_Score;
#ifdef  __WINS__
         CGFile* file = CGFile::NewL(_L("c://HiS.sc"), EFileWrite );
#else
         CGFile* file = CGFile::NewL(_L("HiS.sc"), EFileWrite );
#endif
         file->WriteL((TText8*) & m_Score, sizeof(m_Score));
         //m_GameState = TDoHiS;
         delete file;
         m_bGetHi = ETrue;
     }
 
     if ( aWin ) {
        
         m_pDlg->GameWin();
     }
     else {
        
         m_pDlg->Gameover();
     }
    
     m_pDlg->Render(aCallerGc, aBmp);
     if ( m_KeyHandler->IsDown(53) || m_KeyHandler->IsDown(167) ) {
         m_pDlg->Nothing();
         if ( m_bGetHi ) { // 获得最高分
              m_bGetHi = EFalse;
              return        -2;
         }   
         else {             // 没有超过最高分
              return        -1;
         }
     }
     return 0;
}
 
TInt CChessBoard::ShowSroce ( CFbsBitGc* aCallerGc, CFbsBitmap* aBmp )
{
 
     m_pDlg->ShowS( m_Score );
     m_pDlg->Render(aCallerGc, aBmp);
 
     if ( m_KeyHandler->IsDown(53) || m_KeyHandler->IsDown(167) ) {
         m_pDlg->Nothing();
         //   m_GameState = TRun;
         return        -1414;
     }
     return 0;
}
 
 
 
 
TInt CChessBoard::ShowHiS( CFbsBitGc* aCallerGc, CFbsBitmap * aBmp )
{
     m_pDlg->ShowHiS();
     m_pDlg->Render( aCallerGc, aBmp );
 
     if ( m_KeyHandler->IsDown(53) || m_KeyHandler->IsDown(167) ) {
         m_pDlg->Nothing();
         return -1;
     }
 
     return 0;
 
}
 
TInt CChessBoard::ShowDoHiS( CFbsBitGc* aCallerGc, CFbsBitmap* aBmp )
{
     m_pDlg->DoHiS( m_Score );
     m_pDlg->Render( aCallerGc, aBmp );
 
     if ( m_KeyHandler->IsDown(53) || m_KeyHandler->IsDown(167) ) {
         m_pDlg->Nothing();
         return -1;
     }
 
     return 0;
}
 
 
TInt CChessBoard::Win( CFbsBitGc* aCallerGc, CFbsBitmap* aBmp )
{
     m_Score = m_Score > 9999 ? 9999 : m_Score;
    
     if ( m_Score > m_HighScore ) {
         m_HighScore   = m_Score;
#ifdef  __WINS__
         CGFile* file = CGFile::NewL(_L("c://HiS.sc"), EFileWrite );
#else
         CGFile* file = CGFile::NewL(_L("HiS.sc"), EFileWrite );
#endif
         file->WriteL((TText8*) & m_Score, sizeof(m_Score));
         delete file;
         m_bGetHi = ETrue;
     }
 
 
 
     m_pDlg->PassLeave();
     m_pDlg->Render(aCallerGc, aBmp);
 
     if ( m_KeyHandler->IsDown(53) || m_KeyHandler->IsDown(167) ) {
         m_pDlg->Nothing();
         if ( m_bGetHi ) {
              m_pDlg->DoHiS(m_HighScore);
              m_bGetHi = EFalse;
              return -2;
         }
         else {
              m_pDlg->ShowS(m_Score);
              return   -1;
         }
     }
     return 0;
 
 
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
// 设置第几个关卡
void CChessBoard::SetLeave(TInt aLevel)
{
     m_Leave = aLevel;
}
 
 
// 新一轮的游戏开始
void CChessBoard::GameStart()
{
//-------------------------------------------------------------------------
     m_AliveChessList->Reset();
     switch( m_Leave ) {
         case 1:
              m_pNumTimer->Start( 200000 );
         //   m_pNumTimer->Start( 200000 );
              m_ShortTimer = new CShortTimer( 10000 );
              break;
 
         case 2:
              m_pNumTimer->Start( 190000 );
         //   m_pNumTimer->Start( 500000 );
              m_ShortTimer = new CShortTimer( 9000 );
              break;
 
         case 3:
              m_pNumTimer->Start( 170000 );
         //   m_pNumTimer->Start( 500000 );
              m_ShortTimer = new CShortTimer( 8000 );
              break;
 
     }
 
     for ( TInt i = 0; i < C_ChessNumX * C_ChessNumY; i ++ ) {
         m_chess[i] = new CChess( RandomChess(), i,     m_ChessImage, m_pAniTimer );
     }
 
     for ( i = 0; i < C_ChessNumX * C_ChessNumY; i ++ ) {
         m_AliveChessList->AppendL( m_chess[i] );
     }
 
     //
     m_TargetNum->ComputeTarNum(m_AliveChessList);
     m_ShortTimer->Play();
     m_BombChessList->Reset();
     m_WaitKillChessList->Reset();
}
 
// 过关
void CChessBoard::PassLeave()
{
//-------------------------------------------------------------------------
     m_Score = m_Score > 99999 ? 99999 : m_Score;
    
     if ( m_ShortTimer ) {
         delete   m_ShortTimer;
         m_ShortTimer = NULL;
     }
 
     m_AliveChessList->Reset();
     m_Cur->Reset();
 
 
     for ( TInt i = 0; i < C_ChessNumX * C_ChessNumY; i ++ ) {
         if ( m_chess[i] ) {
              delete m_chess[i];
              m_chess[i]    = NULL;
         }
     }
 
     m_Leave ++;
 
     GameStart();
}
 
 
// 根据关卡随即生成chess的分布
TInt CChessBoard::RandomChess()
{
     TInt index = 0;
     switch ( m_Leave ) {
     case 1:
         index = Math::Rand(m_iSeed) % 6; // 1 ~ 6
         break;
 
     case 2:
         index = Math::Rand(m_iSeed) % 9; // 1 ~ 9
         break;
 
     case 3:
         index = Math::Rand(m_iSeed) % 10;    // 1 ~ 9, *2
         break;
     }
 
     return m_NumsList[index];
}
 
// 根据消去的方块绘制爆炸效果
void CChessBoard::RenderBomb( CFbsBitmap* aBmp )
{
 
 
     TInt time = m_pAniTimer->GetTime();
 
     for ( TInt i = 0; i < m_BombChessList->Count(); i ++ ) {
         if ( time > 0 && time < 180 ) {
              m_BombChessList->At(i)->DrawBomb1(aBmp);
         }
         else if ( time >= 180 && time < 360 ) {
              m_BombChessList->At(i)->DrawBomb2(aBmp);
         }
         else if ( time >= 360 ) {
              m_pAniTimer->Stop();
         }
     }
 
}
 
void CChessBoard::Pause( )
{
     m_pAniTimer->Pause();       // 动画的Timer
     m_ShortTimer->Pause();      // 10 秒倒计时的Timer;
     m_pNumTimer->Pause ();      // 总共倒计时
     m_GameState = TPause;
}
 
// 从暂停中恢复。
void CChessBoard::Resume( )
{
     m_pAniTimer->Play();
     m_ShortTimer->Resume();
     m_pNumTimer->Resume();
     m_GameState = TResume;
}
 
//  开始新的游戏。
void CChessBoard::NewGame()
{
//   m_Leave = 0;
     m_Leave = 0;
     m_Score = 0;
     PassLeave();
}
 
 
 
 
void CChessBoard::EnableSound( TBool aAble )
{
     m_SoundPlayer->EnableSound( aAble );
}
 
 
 
 
 
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值