gameob.h
上传用户:loctite114
上传日期:2007-01-03
资源大小:49k
文件大小:3k
源码类别:

棋牌游戏

开发平台:

Visual C++

  1. // Copyright (c) 1999 Lee Patterson
  2. // leepatterson@home.com
  3. class CPersonInstance : public CTelnetSocket
  4. {
  5. public:
  6. CPersonInstance();
  7. ~CPersonInstance();
  8. public:
  9. enum Color {WHITE,BLACK};
  10. enum Location {LOBBY,CHESS,CHECKERS};
  11. protected:
  12. int m_color;
  13. int m_location;
  14. int m_channel;
  15. };
  16. class BoardSpace
  17. {
  18. public:
  19. BoardSpace();
  20. public:
  21. enum { EMPTY,WPAWN,WKNIGHT,WBISHOP,WROOK,WQUEEN,WKING,BPAWN,BKNIGHT,BBISHOP,BROOK,BQUEEN,BKING };
  22. enum { EMPTYCHECKER, WSQUARE, BSQUARE, WCHECKER, BCHECKER };
  23. public:
  24. int m_id;
  25. int m_type;
  26. };
  27. class BoardGame
  28. {
  29. public:
  30. BoardGame();
  31. void AddPerson(CPersonInstance* pInstance);
  32. void RemovePerson(CPersonInstance* pInstance);
  33. int Left(int v);
  34. int Right(int v);
  35. UINT Type() {return m_nBoardType;}
  36. virtual bool HasAllPlayers()=0;
  37. virtual void AddBlack(CPersonInstance* pInstance)=0;
  38. virtual void AddWatcher(CPersonInstance* pInstance)=0;
  39. //functions that must be defined in derived class
  40. virtual bool ValidMove(int from0,int from1,int to0,int to1)=0;
  41. virtual void Move(int from0,int from1,int to0,int to1)=0;
  42. virtual void Draw()=0; //draw the board on all connections to this board game
  43. CLList m_connections; //list of PersonInstances
  44. CPersonInstance* m_white;
  45. CPersonInstance* m_black;
  46. char m_gamename[30];
  47. enum {BTYPE_UNDEFINED, BTYPE_CHECKERS, BTYPE_CHESS};
  48. protected:
  49. BoardSpace m_spaces[8][8];
  50. UINT m_nBoardType;
  51. };
  52. class ChessBoard : public BoardGame
  53. {
  54. public:
  55. ChessBoard();
  56.  bool ValidMove(int from0,int from1,int to0,int to1);
  57. virtual void Move(int from0,int from1,int to0,int to1);
  58. virtual void FillBoard();
  59. virtual void Draw();
  60. virtual bool HasAllPlayers()=0;
  61. virtual void AddBlack(CPersonInstance* pInstance)=0;
  62. virtual void AddWatcher(CPersonInstance* pInstance)=0;
  63. protected:
  64. void DrawBoard(CPersonInstance* psocket);
  65. char GetPiece(int type);
  66. };
  67. class ChessGameOb : public ChessBoard
  68. {
  69. public:
  70. ChessGameOb(CPersonInstance* pInstanceWhite,const char* pGameName);
  71. ~ChessGameOb();
  72. void AddWatcher(CPersonInstance* pInstance);
  73. void AddBlack(CPersonInstance* pInstance);
  74. bool HasAllPlayers();
  75. public:
  76. CLList m_watchers;
  77. WORD m_wFlags;
  78. enum tagFlags {WAITINGFORPLAYER,INPROGRESS};
  79. };
  80. class CheckerBoard : public BoardGame
  81. {
  82. public: 
  83. CheckerBoard();
  84.  bool ValidMove(int from0,int from1,int to0,int to1);
  85. virtual void Move(int from0,int from1,int to0,int to1);
  86. virtual void FillBoard();
  87. virtual void Draw();
  88. virtual bool HasAllPlayers()=0;
  89. virtual void AddBlack(CPersonInstance* pInstance)=0;
  90. virtual void AddWatcher(CPersonInstance* pInstance)=0;
  91. protected:
  92. void DrawBoard(CPersonInstance* psocket);
  93. char GetPiece(int type);
  94. };
  95. class CheckerGameOb : public CheckerBoard
  96. {
  97. public:
  98. CheckerGameOb(CPersonInstance* pInstanceWhite,const char* pGameName);
  99. ~CheckerGameOb();
  100. void AddWatcher(CPersonInstance* pInstance);
  101. void AddBlack(CPersonInstance* pInstance);
  102. bool HasAllPlayers();
  103. bool HasBothPlayers();
  104. public:
  105. CLList m_watchers;
  106. WORD m_wFlags;
  107. enum tagFlags {WAITINGFORPLAYER,INPROGRESS};
  108. };