Game.h
上传用户:fjjkzlh
上传日期:2010-04-06
资源大小:469k
文件大小:2k
源码类别:

棋牌游戏

开发平台:

Visual C++

  1. #ifndef CLASS_GAME
  2. #define CLASS_GAME
  3. #ifndef _LIST_
  4. #include <list>
  5. using std::list;
  6. #endif
  7. #include "Messages.h"
  8. class CTable;
  9. typedef struct _tagStep {
  10.     int x;
  11.     int y;
  12.     int color;
  13. } STEP;
  14. // 游戏基类
  15. class CGame
  16. {
  17. protected:
  18.     CTable *m_pTable;
  19. public:
  20.     // 落子步骤
  21.     list< STEP > m_StepList;
  22. public:
  23.     // 构造函数
  24.     CGame( CTable *pTable ) : m_pTable( pTable ) {}
  25.     // 析构函数
  26.     virtual ~CGame();
  27.     // 初始化工作,不同的游戏方式初始化也不一样
  28.     virtual void Init() = 0;
  29.     // 处理胜利后的情况,CTwoGame需要改写此函数完成善后工作
  30.     virtual void Win( const STEP& stepSend );
  31.     // 发送己方落子
  32.     virtual void SendStep( const STEP& stepSend ) = 0;
  33.     // 接收对方消息
  34.     virtual void ReceiveMsg( MSGSTRUCT *pMsg ) = 0;
  35.     // 发送悔棋请求
  36.     virtual void Back() = 0;
  37. };
  38. // 一人游戏派生类
  39. class COneGame : public CGame
  40. {
  41.     bool m_Computer[15][15][572]; // 电脑获胜组合
  42.     bool m_Player[15][15][572]; // 玩家获胜组合
  43.     int m_Win[2][572]; // 各个获胜组合中填入的棋子数
  44.     bool m_bStart; // 游戏是否刚刚开始
  45.     STEP m_step; // 保存落子结果
  46.     // 以下三个成员做悔棋之用
  47.     bool m_bOldPlayer[572];
  48.     bool m_bOldComputer[572];
  49.     int m_nOldWin[2][572];
  50. public:
  51.     COneGame( CTable *pTable ) : CGame( pTable ) {}
  52.     virtual ~COneGame();
  53.     virtual void Init();
  54.     virtual void SendStep( const STEP& stepSend );
  55.     virtual void ReceiveMsg( MSGSTRUCT *pMsg );
  56.     virtual void Back();
  57. private:
  58.     // 给出下了一个子后的分数
  59.     int GiveScore( const STEP& stepPut );
  60.     void GetTable( int tempTable[][15], int nowTable[][15] );
  61.     bool SearchBlank( int &i, int &j, int nowTable[][15] );
  62. };
  63. // 二人游戏派生类
  64. class CTwoGame : public CGame
  65. {
  66. public:
  67.     CTwoGame( CTable *pTable ) : CGame( pTable ) {}
  68.     virtual ~CTwoGame();
  69.     virtual void Init();
  70.     virtual void Win( const STEP& stepSend );
  71.     virtual void SendStep( const STEP& stepSend );
  72.     virtual void ReceiveMsg( MSGSTRUCT *pMsg );
  73.     virtual void Back();
  74. };
  75. #endif // CLASS_GAME