您好,欢迎访问三七文档
#includeiostream.h#includecstdlib//棋盘类classchess{charcboard[11][11];public://构造函数chess()//利用构造函数画个基础棋盘{for(inti=0;i11;i++){if(i%2==0){for(intj=0;j11;j++){cboard[i][j]='-';}}elsefor(intj=0;j11;j++){if(j%2==0){cboard[i][j]='|';}else{cboard[i][j]='';}}{}}}//填充棋子的位置voidpoint(intihx,intisx,charcxoo)//根据下棋的位置修改相应的类得数据成员{intpx,py;charname;px=ihx*2-1;py=isx*2-1;name=cxoo;cboard[px][py]=name;}//确定该位置是否有棋子intcheckpoint(intihx,intisx){intpx,py;px=ihx*2-1;py=isx*2-1;if(cboard[px][py]=='o'||cboard[px][py]=='x'){return1;}else{return0;}}//画棋盘voiddrawit(){system(cls);for(inti=0;i11;i++){for(intj=0;j11;j++){coutcboard[i][j];}coutendl;}}//重载画棋盘函数voiddrawit(intjj){//不清屏for(inti=0;i11;i++){for(intj=0;j11;j++){coutcboard[i][j];}coutendl;}}friendintcheck(chess&ab,intnandu);};intcheck(chess&ab,intnandu){intbz=1;switch(nandu){case1:{if(ab.cboard[1][1]=='o'&&ab.cboard[1][3]=='o'&&ab.cboard[1][5]=='o'&&ab.cboard[1][7]=='o'&&ab.cboard[1][9]=='o'){bz=0;}elseif(ab.cboard[3][1]=='o'&&ab.cboard[3][3]=='o'&&ab.cboard[3][5]=='o'&&ab.cboard[3][7]=='o'&&ab.cboard[3][9]=='o'){bz=0;}elseif(ab.cboard[5][1]=='o'&&ab.cboard[5][3]=='o'&&ab.cboard[5][5]=='o'&&ab.cboard[5][7]=='o'&&ab.cboard[5][9]=='o'){bz=0;}elseif(ab.cboard[7][1]=='o'&&ab.cboard[7][3]=='o'&&ab.cboard[7][5]=='o'&&ab.cboard[7][7]=='o'&&ab.cboard[7][9]=='o'){bz=0;}elseif(ab.cboard[9][1]=='o'&&ab.cboard[9][3]=='o'&&ab.cboard[9][5]=='o'&&ab.cboard[9][7]=='o'&&ab.cboard[9][9]=='o'){bz=0;}elseif(ab.cboard[7][1]=='x'&&ab.cboard[7][3]=='x'&&ab.cboard[7][5]=='x'&&ab.cboard[7][7]=='x'&&ab.cboard[7][9]=='x'){bz=0;}elseif(ab.cboard[5][1]=='x'&&ab.cboard[5][3]=='x'&&ab.cboard[5][5]=='x'&&ab.cboard[5][7]=='x'&&ab.cboard[5][9]=='x'){bz=0;}elseif(ab.cboard[3][1]=='x'&&ab.cboard[3][3]=='x'&&ab.cboard[3][5]=='x'&&ab.cboard[3][7]=='x'&&ab.cboard[3][9]=='x'){bz=0;}elseif(ab.cboard[1][1]=='x'&&ab.cboard[1][3]=='x'&&ab.cboard[1][5]=='x'&&ab.cboard[1][7]=='x'&&ab.cboard[1][9]=='x'){bz=0;}elseif(ab.cboard[1][1]=='x'&&ab.cboard[3][3]=='x'&&ab.cboard[5][5]=='x'&&ab.cboard[7][7]=='x'&&ab.cboard[9][9]=='x'){bz=0;}elseif(ab.cboard[1][1]=='o'&&ab.cboard[3][3]=='o'&&ab.cboard[5][5]=='o'&&ab.cboard[7][7]=='o'&&ab.cboard[9][9]=='o'){bz=0;}elseif(ab.cboard[1][9]=='x'&&ab.cboard[3][7]=='x'&&ab.cboard[5][5]=='x'&&ab.cboard[7][3]=='x'&&ab.cboard[9][1]=='x'){bz=0;}elseif(ab.cboard[1][9]=='o'&&ab.cboard[3][7]=='o'&&ab.cboard[5][5]=='o'&&ab.cboard[7][3]=='o'&&ab.cboard[9][1]=='o'){bz=0;}else{bz=1;}}break;case2:if(ab.cboard[1][1]=='x'&&ab.cboard[3][3]=='x'&&ab.cboard[5][5]=='x'&&ab.cboard[7][7]=='x'&&ab.cboard[9][9]=='x'){bz=0;}elseif(ab.cboard[1][1]=='o'&&ab.cboard[3][3]=='o'&&ab.cboard[5][5]=='o'&&ab.cboard[7][7]=='o'&&ab.cboard[9][9]=='o'){bz=0;}elseif(ab.cboard[1][9]=='x'&&ab.cboard[3][7]=='x'&&ab.cboard[5][5]=='x'&&ab.cboard[7][3]=='x'&&ab.cboard[9][1]=='x'){bz=0;}elseif(ab.cboard[1][9]=='o'&&ab.cboard[3][7]=='o'&&ab.cboard[5][5]=='o'&&ab.cboard[7][3]=='o'&&ab.cboard[9][1]=='o'){bz=0;}else{bz=1;}break;case3:if(ab.cboard[1][1]=='x'&&ab.cboard[3][3]=='x'&&ab.cboard[5][5]=='x'&&ab.cboard[7][7]=='x'&&ab.cboard[9][9]=='x'&&ab.cboard[1][9]=='x'&&ab.cboard[3][7]=='x'&&ab.cboard[5][5]=='x'&&ab.cboard[7][3]=='x'&&ab.cboard[9][1]=='x'){bz=0;}elseif(ab.cboard[1][1]=='o'&&ab.cboard[3][3]=='o'&&ab.cboard[5][5]=='o'&&ab.cboard[7][7]=='o'&&ab.cboard[9][9]=='o'&&ab.cboard[1][9]=='o'&&ab.cboard[3][7]=='o'&&ab.cboard[5][5]=='o'&&ab.cboard[7][3]=='o'&&ab.cboard[9][1]=='o'){bz=0;}else{bz=1;}break;}returnbz;/*返回1,说明没有人胜出。返回0,说明有人胜出。*/}//随机获得一个数intgetrandint(intmin,intmax){intnum;num=rand();num=num%(max-min+1)+min;returnnum;}intmain(){intpox,poy,nandu;charbz;charxpoint,ypoint;chessaboard;//定义一个chess的对象aboradcout---------------游戏规则和胜利条件-------------------endl;cout选择难度(1):两个斜对角线之一都为X或O,则获胜。一横行都为X或O则获胜。一竖行都为X或O则获胜。endl;cout选择难度(2):两个斜对角线之一都为X或O,则获胜。endl;cout选择难度(3):两个斜对角线都为X或O,则获胜。endl;cout输入必须为一个两位整数,如11,代表棋盘第一行第一列,输完后按回车键。endl;coutendl;coutendl;cout简单---------1endl;cout中等---------2endl;cout困难---------3endl;cout请选择难度:;cinnandu;system(cls);aboard.drawit(1);for(intcount=0;count25&&check(aboard,nandu);count++)//一共有25个空,所以循环25次。25此结束后获得结果{if((count%2)==0){cout请输入一个两位整数,并按enter键确定!endl;cinxpointypoint;pox=int(xpoint-'0');poy=int(ypoint-'0');while(aboard.checkpoint(pox,poy)){cout请重新输入一个两位整数,并按enter键确定!endl;cinxpointypoint;pox=int(xpoint-'0');poy=int(ypoint-'0');}aboard.point(pox,poy,'o');aboard.drawit();bz='o';}else{pox=getrandint(1,5);poy=getrandint(1,5);while(aboard.checkpoint(pox,poy)){pox=getrandint(1,5);poy=getrandint(1,5);}aboard.point(pox,poy,'x');aboard.drawit();bz='x';}}if(check(aboard,nandu)==0){if(bz=='o'){cout==============================endl;cout====玩家获胜!====endl;cout====恭喜您!====endl;cout==============================endl;}else{cout==============================endl;cout====电脑获胜!====endl;cout====很遗憾!====endl;cout==============================endl;}}else{cout==============================endl;cout====和棋!====endl;cout=
本文标题:C语言。围棋程序
链接地址:https://www.777doc.com/doc-4733258 .html