Jiwu Bu

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  32 随笔 :: 0 文章 :: 25 评论 :: 0 Trackbacks
学习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)
截个图:

目前还比较粗糙,以后以上二个功能完善后,再刷新上传的代码。欢迎大家提出好的意见,TKS!

五子棋源码:
http://www.cppblog.com/Files/bujiwu/ChessMan.rar
posted on 2009-08-23 21:41 bujiwu 阅读(2381) 评论(2)  编辑 收藏 引用 所属分类: C++

评论

# re: 五子棋 2009-08-24 14:40 haskell
不错
学网络的时候我也写过
只有网络对战功能,界面WTL :)
http://download.csdn.net/source/755156  回复  更多评论
  

# re: 五子棋 2009-08-29 23:47 mzoozm
支持  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理