五子棋

五子棋<->
学习C++有比较长一段时间了。闲着没事写了一个五子棋的稚形。目前基本已经完成本机双人对战功能,包括悔棋,标记当前下棋位置等。以后准备进一步完善以下功能:
1、网络对战功能(包括GameClient与GameServer类,可以了解Socket编程)。
2、人机对战功能(目前还没有好的思路)。

棋盘等界面基本都是一笔笔画出来的,有的是加载图片。没有什么技术含量,主要是比较繁琐,权当对以前学习的Windows消息,画图等的复习。
主要用到了以下几个类:

棋子类(包括棋子的颜色与棋子是否使能):
 1  class  CChessMan
 2  {
 3  public :
 4      CChessMan()
 5      {
 6          Reset();
 7      }
 8 
 9       void  Reset()
10      {
11          Enable  =   false ;
12          Color  =  BLACK;
13      }
14 
15       bool  Enable;
16      COLORREF Color;
17  };

棋盘类(管理各个棋子,判断是否五子一线等):
 1  class  CTable
 2  {
 3  public :
 4      CTable();
 5 
 6       void  ResetTable();
 7      
 8       void  SetChessMan( int  x,  int  y);
 9      CChessMan GetChessMan( int  x,  int  y)  const ;
10 
11      GAMESTATE  GetRunState()  const ;
12       void  SetRunState(GAMESTATE State);
13 
14       bool  GetLastChessMan(POINT  & p)  const ;
15 
16       void  RegretLastStep();
17 
18      WINNER_SIDE GetWhiteSideWinFlag()  const ;
19 
20       void  SetGameMode( GAME_MODE Mode );
21 
22  private :
23       bool  JudgeWinner( int  x,  int  y)  const ;
24      
25       bool  JudgeRowChessMan( int  x,  int  y)  const ;
26       bool  JudgeColumnChessMan( int  x,  int  y)  const ;
27       bool  JudgeLeftChessMan( int  x,  int  y)  const ;
28       bool  JudgeRightChessMan( int  x,  int  y)  const ;
29      
30       bool  CalcChessmanNum(CChessMan *  pChessMan,  int  Pos)  const ;
31      
32       void  ChangeState();
33 
34  private :
35      COLORREF  Color;    // 当前下棋的棋子颜色
36      GAMESTATE  State;    // 当前游戏状态Runing,Waiting,GameOver
37 
38      CChessMan pChessMan[NumOfLine][NumOfLine];    // 初始化棋盘上所有棋子
39      stack < POINT >  RecordStack;    // 记录下棋轨迹,主要为悔棋使用
40 
41      WINNER_SIDE Winner;     // 白棋与黑棋哪方获胜
42      GAME_MODE  Mode;   // 模式,目前还只支持本机模式,预留以后网络对战时使用
43  };

具体怎么实现,还是看代码了。环境(Windows Xp + Visual Studio 2005)
截个图:
五子棋_第1张图片
目前还比较粗糙,以后以上二个功能完善后,再刷新上传的代码。欢迎大家提出好的意见,TKS!

五子棋源码:
http://www.cppblog.com/Files/bujiwu/ChessMan.rar

你可能感兴趣的:(五子棋)