五子棋C++代码2.doc
上传人:qw****27 上传时间:2024-09-11 格式:DOC 页数:10 大小:44KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

五子棋C++代码2.doc

五子棋C++代码2.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include<iostream>#include<memory.h>#include<string>usingnamespacestd;constintN=20;//定义棋盘规模intpace=0;//统计步数constcharchess[2]={'X','O'};//定义数组显示棋子颜色intlastI=0;intmaxI=9,maxJ=9;intlastJ=0;boolSystemError=0;voidinitchess(char*A,intN)//该函数,初始化棋盘{inti,j;for(i=0;i<N;i++){for(j=0;j<N;j++){A[i*N+j]='.';}}return;}voidprintchess(char*A,intN)//该函数,打印棋盘{inti,j;for(i=0;i<N;i++){if(i<10)cout<<""<<i;elsecout<<i;}cout<<N<<endl;for(i=0;i<N;i++){if(i<9)cout<<""<<i+1<<"";elsecout<<i+1<<"";for(j=0;j<N;j++){cout<<A[i*N+j];cout<<"";}cout<<endl;}return;}voidplayer(char*A,intN,intcolor)//该函数为玩家落子{inti,j;while(1){if(color==0)cout<<"请黑色方输入落子坐标,格式为xy"<<endl;elsecout<<"请白色方输入落子坐标,格式为xy"<<endl;cout<<"输入00退出游戏"<<endl;cin>>j>>i;if(j==0&&i==0){if(color==0)cout<<"黑色方放弃,白子获胜了,祝贺您!"<<endl;elsecout<<"白色方放弃,黑子获胜了,祝贺您!"<<endl;SystemError=1;return;}i--;j--;if(i<0||i>20||j<0||j>20)cout<<"请输入1——20的数"<<endl;elseif(A[i*N+j]!='.')cout<<"已有棋子,请重下"<<endl;elsebreak;}A[i*N+j]=chess[color];lastI=i;lastJ=j;pace++;return;}voidcomputeValue(intcolor,char*A){inti=0,j=0,maxmax=0,mark[400];for(i=0;i<N;i++){for(j=0;j<N;j++)mark[i*N+j]=0;}//初始分数为0charI;charU;if(color==0){I='X';U='O';}else{I='O';U='X';}for(i=1;i<N;i++){for(j=1;j<N;j++){if(A[i*N+j]=='.'){if((A[(i-1)*N+j]==I)||(A[(i+1)*N+j]==I)||(A[i*N+(j+1)]==I)||(A[i*N+(j-1)]==I)){mark[i*N+j]+=9;}//旁边有己方的棋if((A[(i-1)*N+j]==U)||(A[(i+1)*N+j]==U)||(A[i*N+(j+1)]==U)||(A[i*N+(j-1)]==U)){mark[i*N+j]+=10;}//旁边有对方的棋if((A[(i-1)*N+j]==I&&A[(i-2)*N+j]==I)||(A[i*N+(j-1)]==I&&A[i*N+(j-2)]==I)||(A[i*N+(j+1)]==I&&A[i*N+(j+2)]==I)||(A[(i+1)*N+j]==I&&A[(i+2)*N+j]==I)||(A[(i-1)*N+(j+1)]==I&&A[(i-2)*N+(j+2)]==I)||(A[(i+1)*N+(j+1)]==I&&A[(i+2)*N+(j+2)]==I)||(A[(i-1)*N+(j-1)]==I&&A[(i-2)*N+(j-2)]==I)||(A[(i+1)*N+(j-1)]==I&&A[(i+2)*N+(j-2)]==I)){mark[i*N+j]+=70;}//己方##if((A[(i-1)*N+j]==U&&A[(i-2)*N+j]==U)||(A[i*N+(j-1)]==U&&A[i*N+(j-2)]==U)||(A[i*N+(j+1)]==U&&A[i*N+(j+2)]==U)||(A[(i+1)*N+j]==U&&A[(i+2)*N+j]==U)||(A[i-1*N+j+1]==U&&A[i-2*N+j+2]==U)||(A[i+1*N+j+1]==U&&A[i+2*N+j+2]==U)||(A[i-1*N+j-