五子棋C++代码.doc
《五子棋C++代码.doc》由会员分享,可在线阅读,更多相关《五子棋C++代码.doc(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date五子棋C+代码五子棋C+代码#include#include /*输出格式控制*/#include /*窗口控制(本程序用来对输出字符的颜色进行控制)*/#include /* 清屏操作. 调用system(cls); 每次输出新的棋局动态之前,刷新窗口*/#include /*为寻找较好的走法,需进行必要的数学运算*/using namespace std;clas
2、s Matrix /*基类Matrix,Matrix的行列数决定棋盘的大小*/protected:int lines,columns; char* ptr; /*二重指针,用来定义动态二维数组*/public:static char element; /*棋局的基元素,即空白子标识符*/Matrix(int li,int col):lines(li),columns(col)int i,j;ptr=new char*lines; for(i=0;ilines;i+)ptri=new charcolumns; /*创建动态二维数组*/for(i=0;ilines;i+)for(j=0;jcolu
3、mns;j+)ptrij=element; /*在构造函数中将棋局的基元素初始化为element*/Matrix()int i;for(i=0;ilines;i+)delete ptri;delete ptr; /*析构函数中,释放动态二维数组*/void set(int x,int y,char ch)ptrlines-yx-1=ch; /*变元控制,用于步棋*/virtual void show()int i,j; for(i=0;ilines;i+)for(j=0;jcolumns;j+)coutsetw(4)ptrij;coutendl;char Matrix:element=.; /
4、*初始化基元素*/class Game:public Matrixprivate:char machine,man; /*机方和人方的棋子形标识符*/int number; /*代表连珠数(可以是四子连珠、五子连珠,等等)*/public:Game(int line=7,int column=7,int num=4,char a=6,char b=2):Matrix(line,column),machine(a),man(b),number(num)static int flag; /*胜负表征量flag,取值0、1、-1;0值为胜负未分,1值为人方胜,-1值为机方胜*/static int
5、count; /*统计步数*/void show(); /*布局输出*/void analyse(); /*胜负性分析. 每走一步之后调用此函数,分析是否有一方获胜;人方获胜则赋flag=1,机方获胜赋flag=-1*/void Move_by_man(); /*人走执行*/*下面两函数是机方分析并决定走法的关键函数*/int reflect(char* const ptr,char ch1,char ch2,int rank,int number); void Move_by_computer(); /*机走执行*/void fruit(); /*胜负性执行*/void execute(in
6、t mark); /*步棋执行函数,调用机走执行或人走执行*/friend ostream& operator(ostream& output,const Game& game) /*重载输出*/int i,j; void color(int);for(i=0;igame.lines;i+)color(13); /*设置行标(竖坐标)的颜色*/coutsetw(10)game.lines-i; /*输出行标*/for(j=0;jgame.columns;j+)if(game.ptrij=game.machine)color(10); /*双方棋子、基元素按不同颜色输出*/else if(gam
7、e.ptrij=game.man)color(12);else color(7);outputsetw(5)game.ptrij;coutendlendl;color(10); /*设置列标(横坐标)的颜色*/coutendlsetw(10) ; for(j=1;j=game.columns;j+)outputsetw(5)j; /*输出列标*/coutendlendl;color(10);cout机方:game.machine; /*机方棋子*/color(12);cout 人方:game.manendl;/*人方棋子*/color(7); return output;int Game:fl
8、ag=0;int Game:count=0;void Game:show() system(cls); /*清屏操作*/cout_-_-_-_-_-_-_-_-_-_-_-_-_endl;coutendl平行number子棋盘:endl*thisendlendl;void Game:analyse() int i,j,k;char ch=machine;start:for(i=0;ilines;i+) /*横向分析*/for(j=0;jcolumns-number+1;j+)k=0;for(int m=0;mnumber;m+)if(ptrij+m=ch)k+;if(k=number)if(c
9、h=machine)flag=-1;else flag=1;for(i=0;ilines-number+1;i+) /*纵向分析*/for(j=0;jcolumns;j+)k=0;for(int m=0;mnumber;m+)if(ptri+mj=ch)k+;if(k=number)if(ch=machine)flag=-1;else flag=1;for(i=0;ilines-number+1;i+) /*斜向分析*/for(j=0;jcolumns-number+1;j+)k=0;for(int m=0;mnumber;m+)if(ptri+mj+m=ch)k+;if(k=number)i
10、f(ch=machine)flag=-1;else flag=1;for(i=number-1;ilines;i+) /*斜向分析*/for(j=0;jcolumns-number+1;j+)k=0;for(int m=0;mnumber;m+)if(ptri-mj+m=ch)k+;if(k=number)if(ch=machine)flag=-1;else flag=1;if(ch!=man)ch=man; goto start;void Game:Move_by_man()int x,y;cout当前步数为countendl;start:coutx;while(cin.peek()9)ci
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 C+ 代码
限制150内