为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

井字棋游戏代码

2017-11-13 33页 doc 54KB 33阅读

用户头像

is_589748

暂无简介

举报
井字棋游戏代码井字棋游戏代码 #include #include #include using namespace std; char r='d'; char f='d'; int jiru1[9]={0}; //人人游戏时用来记录是否在此处下过棋 int i=1; char game[3][3]; //用来下棋 int x,y; int a[8]; //人机游戏时记录每行,列,斜行有多少子 int b[8]; //人机游戏时记录机器每行,列,斜行有多少子 int c[8]; //人机游戏时记录人每行,列,斜行有...
井字棋游戏代码
井字棋游戏代码 #include #include #include using namespace std; char r='d'; char f='d'; int jiru1[9]={0}; //人人游戏时用来记录是否在此处下过棋 int i=1; char game[3][3]; //用来下棋 int x,y; int a[8]; //人机游戏时记录每行,列,斜行有多少子 int b[8]; //人机游戏时记录机器每行,列,斜行有多少子 int c[8]; //人机游戏时记录人每行,列,斜行有多少子 int jiru[3][3]={0}; //人机游戏时用来记录是否在此处下过棋 int qi[3][3]={0}; //人人游戏时用来记录机器是否在此处下过棋 int ren[3][3]={0}; //人人游戏时用来记录人是否在此处下过棋 void zhuanhua(int t) //把输入的1~9数字转化成坐标 { int h,g; h=t%3; g=(t-h)/3; x=g; y=h-1; } void suan() //人机游戏时计算每行,列,斜行有多少子 { a[1]=jiru[0][0]+jiru[0][1]+jiru[0][2]; a[2]=jiru[1][0]+jiru[1][1]+jiru[1][2]; a[3]=jiru[2][0]+jiru[2][1]+jiru[2][2]; a[4]=jiru[0][0]+jiru[1][0]+jiru[2][0]; a[5]=jiru[0][1]+jiru[1][1]+jiru[2][1]; a[6]=jiru[0][2]+jiru[1][2]+jiru[2][2]; a[7]=jiru[0][0]+jiru[1][1]+jiru[2][2]; a[8]=jiru[0][2]+jiru[1][1]+jiru[2][0]; b[1]=qi[0][0]+qi[0][1]+qi[0][2]; b[2]=qi[1][0]+qi[1][1]+qi[1][2]; b[3]=qi[2][0]+qi[2][1]+qi[2][2]; b[4]=qi[0][0]+qi[1][0]+qi[2][0]; b[5]=qi[0][1]+qi[1][1]+qi[2][1]; b[6]=qi[0][2]+qi[1][2]+qi[2][2]; b[7]=qi[0][0]+qi[1][1]+qi[2][2]; b[8]=qi[0][2]+qi[1][1]+qi[2][0]; c[1]=ren[0][0]+ren[0][1]+ren[0][2]; c[2]=ren[1][0]+ren[1][1]+ren[1][2]; c[3]=ren[2][0]+ren[2][1]+ren[2][2]; c[4]=ren[0][0]+ren[1][0]+ren[2][0]; c[5]=ren[0][1]+ren[1][1]+ren[2][1]; c[6]=ren[0][2]+ren[1][2]+ren[2][2]; c[7]=ren[0][0]+ren[1][1]+ren[2][2]; c[8]=ren[0][2]+ren[1][1]+ren[2][0]; } void chushihua() //把数据初始化 { i=1; int j,k; for(j=0;j<3;j++) { for(k=0;k<3;k++) { game[j][k]='/'; } } for(j=0;j<3;j++) { for(k=0;k<3;k++) { jiru[j][k]=0; qi[j][k]=0; ren[j][k]=0; } } } void shuru() //输入数据 { int k,j; for(k=0;k<3;k++) { for(j=0;j<3;j++) { cout << game[k][j] << " "; } cout << endl; } } void renxia(int t,int s) //人落子的情况 { if(i%2==1) { game[t][s]='x'; jiru[t][s]=1; ren[t][s]=1; system("cls"); shuru(); } else { game[t][s]='o'; jiru[t][s]=1; ren[t][s]=1; system("cls"); shuru(); } } void huiqi1(int t,int s) //人机游戏时人悔棋的情况 { game[t][s]='/'; jiru[t][s]=0; ren[t][s]=0; system("cls"); shuru(); } void suiji() //产生随机数 { int choice; srand((unsigned int)time(NULL)); choice=rand()%10; int h,g; if(choice==10) { choice=9; } else if(choice==0) { choice=1; } h=choice%3; g=(choice-h)/3; game[g][h-1]='x'; jiru[g][h-1]=1; qi[g][h-1]=1; } void jixia() //人机游戏时机器下子 { if(i==1) { suiji(); system("cls"); shuru(); } else if(i==3) { int p; for(p=1;p<10;p++) { int h,g; h=p%3; g=(p-h)/3; if(jiru[g][h-1]==0) { game[g][h-1]='x'; jiru[g][h-1]=1; qi[g][h-1]=1; break; } } system("cls"); shuru(); } else { suan(); int u,v=0; for(u=1;u<4;u++) { if((a[u]==2)&&((b[u]==2)||(c[u]==2))) { int z; for(z=0;z<3;z++) { if(jiru[u-1][z]==0) { game[u-1][z]='x'; jiru[u-1][z]=1; qi[u-1][z]=1; } } system("cls"); shuru(); v++; break; } } if(v==0) { for(u=4;u<7;u++) { if((a[u]==2)&&((b[u]==2)||(c[u]==2))) { int z; for(z=0;z<3;z++) { if(jiru[z][u-4]==0) { game[z][u-4]='x'; jiru[z][u-4]=1; qi[z][u-4]=1; } } system("cls"); shuru(); v++; break; } } if(v==0) { if((a[7]==2)&&((b[7]==2)||(c[7]==2))) { if(jiru[0][0]==0) { game[0][0]='x'; jiru[0][0]=1; qi[0][0]=1; } else if(jiru[1][1]==0) { game[1][1]='x'; jiru[1][1]=1; qi[1][1]=1; } else if(jiru[2][2]==0) { game[2][2]='x'; jiru[2][2]=1; qi[2][2]=1; } system("cls"); shuru(); v++; } } if(v==0) { if((a[8]==2)&&((b[8]==2)||(c[8]==2))) { if(jiru[0][2]==0) { game[0][2]='x'; jiru[0][2]=1; qi[0][2]=1; } else if(jiru[1][1]==0) { game[1][1]='x'; jiru[1][1]=1; qi[1][1]=1; } else if(jiru[2][0]==0) { game[2][0]='x'; jiru[2][0]=1; qi[2][0]=1; } system("cls"); shuru(); v++; } if(v==0) { for(u=1;u<4;u++) { if((a[u]==1)&&(b[u]==1)) { int z; for(z=0;z<3;z++) { if(jiru[u-1][z]==0) { game[u-1][z]='x'; jiru[u-1][z]=1; qi[u-1][z]=1; system("cls"); shuru(); v++; break; } } } } if(v==0) { for(u=4;u<7;u++) { if((a[u]==1)&&(b[u]==1)) { int z; for(z=0;z<3;z++) { if(jiru[z][u-4]==0) { game[z][u-4]='x'; jiru[z][u-4]=1; qi[z][u-4]=1; system("cls"); shuru(); v++; break; } } } } if(v==0) { if((a[7]==1)&&(b[7]==1)&&(c[7]==0)) { if((jiru[0][0]==1)&&(jiru[1][1]==0)){game[1][1]='x';jiru[1][1]=1;qi[1][1]=1;} else if((jiru[1][1]==1)&&(jiru[2][2]==0)){game[2][2]='x';jiru[2][2]=1;qi[2][2]=1;} else if((jiru[2][2]==1)&&(jiru[1][1]==0)){game[1][1]='x';jiru[1][1]=1;qi[1][1]=1;} system("cls"); shuru(); v++; } if(v==0) { if((a[8]==1)&&(b[8]==1)&&(c[8]==0)) { if((jiru[0][2]==1)&&(jiru[1][1]==0)){game[1][1]='x';jiru[1][1]=1;qi[1][1]=1;} else if((jiru[1][1]==1)&&(jiru[0][2]==0)){game[0][2]='x';jiru[0][2]=1;qi[0][2]=1;} else if((jiru[2][0]==1)&&(jiru[1][1]==0)){game[1][1]='x';jiru[1][1]=1;qi[1][1]=1;} system("cls"); shuru(); v++; } if(v==0) { int p; for(p=1;p<9;p++) { int h,g; h=p%3; g=(p-h)/3; if((jiru[g][h-1]==0)&&(ren[g][h-1]==0)) { game[g][h-1]='x'; jiru[g][h-1]=1; qi[g][h-1]=1; system("cls"); shuru(); v++; break; } } system("cls"); shuru(); } } } } } } } } } void tishi() //提示 { if(i==1) { cout << "建议输入1,3,7,9中的一个" << endl; } else if(i==2) { if((qi[0][0]==1)||(qi[0][2]==1)||(qi[2][0]==1)||(qi[2][2]==1)&&(i==2)) { cout << "建议输入5" << endl; } else if(qi[1][1]==1) { cout << "建议输入7" << endl; } else if(qi[0][1]==1) { cout << "建议输入5" << endl; } else if(qi[2][1]==1) { cout << "建议输入5" << endl; } else if(qi[1][0]==1) { cout << "建议输入5" << endl; } else if(qi[1][2]==1) { cout << "建议输入5" << endl; } } else if((qi[0][0]==1)&&(jiru[1][0]==0)&&(qi[2][0]==1)) { cout << "建议输入4" << endl; } else if((qi[0][0]==1)&&(jiru[0][1]==0)&&(qi[0][2]==1)) { cout << "建议输入2" << endl; } else if((ren[1][1]==1)&&(jiru[0][2]==0)&&(jiru[2][0]==0)&&(qi[2][0]==0)&&(qi[1][0]==0 )&&(qi[2][1]==0)&&(qi[2][2]==0)) { cout << "建议输入3" << endl; } else if((ren[1][1]==1)&&(jiru[0][0]==0)&&(jiru[2][2]==0)) { cout << "请在正向的斜排未落子处落子" << endl; } else { suan(); int u,v=0; for(u=1;u<4;u++) { if(a[u]==2&&((b[u]==2)||(c[u]==2))) { cout << "请在第" << u << "行未落子处落子" << endl; v++; break; } } if(v==0) { for(u=4;u<7;u++) { if(a[u]==2&&((b[u]==2)||(c[u]==2))) { cout << "请在第" << (u-3) << "列未落子处落子" << endl; v++; break; } } if(v==0) { if(a[8]==2&&((b[8]==2)||(c[8]==2))) { cout << "请在反向的斜排未落子处落子" << endl; v++; } if(v==0) { if(a[7]==2&&((b[7]==2)||(c[7]==2))) { cout << "请在正向的斜排未落子处落子" << endl; v++; } if(v==0) { for(u=1;u<4;u++) { if(a[u]==1&&c[u]==1&&b[u]==0) { cout << "请在第" << u << "行未落子处落子" << endl; v++; break; } } if(v==0) { for(u=4;u<7;u++) { if(a[u]==1&&c[u]==1&&b[u]==0) { cout << "请在第" << (u-3) << "列未落子处落子" << endl; v++; break; } } if(v==0) { if(a[8]==1&&(b[8]==0&&c[8]==1)) { cout << "请在反向的斜排未落子处落子" << endl; v++; } if(v==0) { if(a[7]==1&&(b[7]==0&&c[7]==1)) { cout << "请在正向的斜排未落子处落子" << endl; v++; } if(v==0) { cout << "请在未落子处落子" << endl; } } } } } } } } } } void jixianzou() //人机对战的情况 { if((game[0][0]=='x'&&game[0][1]=='x'&&game[0][2]=='x')||(game[1][0]=='x'&&game[1 ][1]=='x'&&game[1][2]=='x')||(game[2][0]=='x'&&game[2][1]=='x'&&game[2][2]=='x') ||(game[0][0]=='x'&&game[1][0]=='x'&&game[2][0]=='x')||(game[0][1]=='x'&&game[1] [1]=='x'&&game[2][1]=='x')||(game[0][2]=='x'&&game[1][2]=='x'&&game[2][2]=='x')) { cout << "玩家失败" << endl; } else if((game[0][0]=='x'&&game[1][1]=='x'&&game[2][2]=='x')||(game[0][2]=='x'&&game[1 ][1]=='x'&&game[2][0]=='x')) { cout << "玩家失败" << endl; } else if((game[0][0]=='o'&&game[0][1]=='o'&&game[0][2]=='o')||(game[1][0]=='o'&&game[1 ][1]=='o'&&game[1][2]=='o')||(game[2][0]=='o'&&game[2][1]=='o'&&game[2][2]=='o') ||(game[0][0]=='o'&&game[1][0]=='o'&&game[2][0]=='o')||(game[0][1]=='o'&&game[1] [1]=='o'&&game[2][1]=='o')||(game[0][2]=='o'&&game[1][2]=='o'&&game[2][2]=='o')) { cout << "玩家获胜" << endl; } else if((game[0][0]=='o'&&game[1][1]=='o'&&game[2][2]=='o')||(game[0][2]=='o'&&game[1 ][1]=='o'&&game[2][0]=='o')) { cout << "玩家获胜" << endl; } else if(i==10) { cout << "平局" << endl; } else { if(i%2==1) { jixia(); i++; jixianzou(); } else { cout << "是否需要提示(0,1)" << endl; int q; cin >> q; if(q==0) { tishi(); } int t; cin >> t; zhuanhua(t); if((t<0)||t>10||jiru[x][y]==1) { cout << "输入错误,请重新输入" << endl; jixianzou(); } else { renxia(x,y); cout<< "是否悔棋(Y or N),是否重新开始(C or N),是否结束(T or N)" << endl; cin >> f; if(f=='Y') { huiqi1(x,y); jixianzou(); } else if(f=='C') { system("cls"); chushihua(); shuru(); jixianzou(); } else if(f=='T') { } else { renxia(x,y); i++; jixianzou(); } } } } } void ren1(int choice) //人人对战时人下子 { if(i%2==1) { int h,g; h=choice%3; g=(choice-h)/3; game[g][h-1]='x'; jiru1[choice-1]=1; system("cls"); shuru(); } else { int h,g; h=choice%3; g=(choice-h)/3; game[g][h-1]='o'; jiru1[choice-1]=1; system("cls"); shuru(); } } void huiqi(int choice) //人人对战时人悔棋 { int h,g; h=choice%3; g=(choice-h)/3; game[g][h-1]='/'; jiru1[choice-1]=0; system("cls"); shuru(); } void xiaqi() //人人对战时的下棋情况 { if((game[0][0]=='x'&&game[0][1]=='x'&&game[0][2]=='x')||(game[1][0]=='x'&&game[1][1]=='x'&&game[1][2]=='x')||(game[2][0]=='x'&&game[2][1]=='x'&&game[2][2]=='x')||(game[0][0]=='x'&&game[1][0]=='x'&&game[2][0]=='x')||(game[0][1]=='x'&&game[1][1]=='x'&&game[2][1]=='x')||(game[0][2]=='x'&&game[1][2]=='x'&&game[2][2]=='x')) { cout << "玩家1获胜" << endl; } else if((game[0][0]=='x'&&game[1][1]=='x'&&game[2][2]=='x')||(game[0][2]=='x'&&game[1][1]=='x'&&game[2][0]=='x')) { cout << "玩家1获胜" << endl; } else if((game[0][0]=='o'&&game[0][1]=='o'&&game[0][2]=='o')||(game[1][0]=='o'&&game[1][1]=='o'&&game[1][2]=='o')||(game[2][0]=='o'&&game[2][1]=='o'&&game[2][2]=='o')||(game[0][0]=='o'&&game[1][0]=='o'&&game[2][0]=='o')||(game[0][1]=='o'&&game[1] [1]=='o'&&game[2][1]=='o')||(game[0][2]=='o'&&game[1][2]=='o'&&game[2][2]=='o')) { cout << "玩家2获胜" << endl; } else if((game[0][0]=='o'&&game[1][1]=='o'&&game[2][2]=='o')||(game[0][2]=='o'&&game[1 ][1]=='o'&&game[2][0]=='o')) { cout << "玩家2获胜" << endl; } else if(i==10) { cout << "平局" << endl; } else { int m; cin >> m; if(m>9||m<1||jiru1[m-1]==1) { cout << "输入错误,请重新输入" << endl; xiaqi(); } else { ren1(m); cout << "(是否悔棋Y or N)或(是否重新开始 C or N)或(是否结束游戏 T or N)" << endl; cin >> r; if(r=='Y') { huiqi(m); xiaqi(); } else if(r=='C') { i=1; int j,k; for(j=0;j<3;j++) { for(k=0;k<3;k++) { game[j][k]='/'; } } for(j=0;j<9;j++) { jiru1[j]=0; } system("cls"); shuru(); xiaqi(); } else if(r=='T') { } else { i++; system("cls"); shuru(); xiaqi(); } } } } int main() //主函数 { cout << " 欢迎进入井字棋游戏!" << endl; cout << " 本游戏用数字1~9示下棋位置 " << endl; while(1) { if((r=='T')||(f=='T')) { break; } cout << " 是否下棋 Y or N " << endl; char y; cin >> y; if(y=='N') { break; } else { i=1; int j,k; for(j=0;j<3;j++) { for(k=0;k<3;k++) { game[j][k]='/'; } } for(j=0;j<9;j++) { jiru1[j]=0; } cout << " 人机下棋 or 人人下棋 ( 1 or 2 )" << endl; int u; cin >> u; if(u==2) { shuru(); xiaqi(); } if(u==1) { chushihua(); shuru(); jixianzou(); } } } return 0; }
/
本文档为【井字棋游戏代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索