基于字符界面的井字棋

基于字符界面的井字棋

ID:15962101

大小:37.00 KB

页数:11页

时间:2018-08-06

基于字符界面的井字棋_第1页
基于字符界面的井字棋_第2页
基于字符界面的井字棋_第3页
基于字符界面的井字棋_第4页
基于字符界面的井字棋_第5页
资源描述:

《基于字符界面的井字棋》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于字符界面的井字棋/*代码作者:周翔代码功能:基于字符界面的井字棋人机交互程序。说明:对状态空间采用最大最小值搜索技术。计算机在生成的子节点中选择评估函数值最大的节点;而计算机在选择着数时使“人”选择评估函数值最小的节点,也就是对计算机一方最不利的节点。*/#includeusingnamespacestd;inttmpQP[3][3];//表示棋盘数据的临时数组,其中的元素0表示该格为空,//1表示计算机放下的子,-1表示人放下的子。constintMAX_NUM=1000;//扩展生成状态节点

2、的最大数目constintNO_BLANK=-1001;//表示没有空格constintTREE_DEPTH=3;//搜索树的最大深度,如果增加此值可以提高计算机的“智力”,//但同时也需要增加MAX_NUM的值。constintNIL=1001;//表示空staticints_count;//用来表示当前分析的节点的下标structState//该结构表示棋盘的某个状态,也可看做搜索树中的一个节点{intQP[3][3];//棋盘格局inte_fun;//当前状态的评估函数值intchild[9];//儿女节点的下标

3、intparent;//双亲节点的下标intbestChild;//最优节点(评估函数值最大)的儿女节点下标}States[MAX_NUM];//用来保存搜索树中状态节点的数组voidInit()//初始化函数,当前的棋盘格局总是保存在States[0]中{s_count=0;for(inti=0;i<3;i++)for(intj=0;j<3;j++)States[0].QP[i][j]=0;//将棋盘清空States[0].parent=NIL;//初始节点没有双亲节点}voidPrintQP()//打印当棋盘格局的

4、函数{for(inti=0;i<3;i++){for(intj=0;j<3;j++)cout<

5、=-1)return-1;}for(i=0;i<3;i++){if(s.QP[0][i]==1&&s.QP[1][i]==1&&s.QP[2][i]==1)return1;if(s.QP[0][i]==-1&&s.QP[1][i]==-1&&s.QP[2][i]==-1)return-1;}if((s.QP[0][0]==1&&s.QP[1][1]==1&&s.QP[2][2]==1)

6、

7、(s.QP[2][0]==1&&s.QP[1][1]==1&&s.QP[0][2]==1))return1;if((s.QP[0][

8、0]==-1&&s.QP[1][1]==-1&&s.QP[2][2]==-1)

9、

10、(s.QP[2][0]==-1&&s.QP[1][1]==-1&&s.QP[0][2]==-1))return-1;return0;}inte_fun(States)//评估函数{boolflag=true;for(inti=0;i<3;i++)for(intj=0;j<3;j++)if(s.QP[i][j]==0)flag=false;if(flag)returnNO_BLANK;if(IsWin(s)==-1)return-MAX_N

11、UM;//如果计算机输了,返回最小值if(IsWin(s)==1)returnMAX_NUM;//如果计算机赢了,返回最大值intcount=0;//该变量用来表示评估函数的值//将棋盘中的空格填满自己的棋子,既将棋盘数组中的0变为1for(i=0;i<3;i++)for(intj=0;j<3;j++)if(s.QP[i][j]==0)tmpQP[i][j]=1;elsetmpQP[i][j]=s.QP[i][j];//电脑一方//计算每一行中有多少行的棋子连成3个的for(i=0;i<3;i++)count+=(tm

12、pQP[i][0]+tmpQP[i][1]+tmpQP[i][2])/3;//计算每一列中有多少列的棋子连成3个的for(i=0;i<3;i++)count+=(tmpQP[0][i]+tmpQP[1][i]+tmpQP[2][i])/3;//斜行有没有连成3个的?count+=(tmpQP[0][0]+tmpQP[1][1]+t

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。