版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include<iostream>usingnamespacestd;conststaticintchessboard_size=10;//由于棋盘的输出函数,所以此程序最多支持10乘10的棋盘charch='0';//记录哪家赢intoff=0;//关闭最终程序classchess{public: chess()//构造函数 {init(); } voidinit() { playcount=0; inti,j; for(i=0;i<chessboard_size;i++)//构建由+号组成的棋盘 { for(j=0;j<chessboard_size;j++) { chessboard[i][j]='+'; } } } voidgamestart(); voidprint();//打印出棋盘voidinput(); voidjudge(); voidgameover();private: charchessboard[chessboard_size][chessboard_size]; intplayer;//以0和1表示A,B两个玩家 intplaycount;//判断有五颗棋一样的统计变量};//注意这个类定义完的分号voidchess::gamestart(){print();input();}voidchess::print(){inti,j;cout<<"0123456789"<<endl;//注意前面有一个空格字符,且每个字符相隔一个空格for(i=0;i<chessboard_size;i++){cout<<i; for(j=0;j<chessboard_size;j++) { cout<<chessboard[i][j]<<'-';//加这个'-'号,与液晶的字符显示比例有关 }printf("\n");}}voidchess::input(){charxi,yi;intx,y;if(player==0){ cout<<"请A方走棋:"; cin>>xi>>yi; x=xi-'0'; y=yi-'0'; while(x<0||x>=chessboard_size||y<0||y>=chessboard_size||chessboard[x][y]!='+')//直到输入正确就跳出 { cout<<"输入有误,请重新输入:";//条件中chessboard[x][y]!='+'是为了防止重复在同一位置下棋。 cin>>xi>>yi; x=xi-'0'; y=yi-'0'; } chessboard[x][y]='A';}if(player==1){ { if((chessboard[i+j][j]==chessboard[i+j+1][j+1])&&(chessboard[i+j][j]!='+')) { playcount=playcount+1; if(playcount==4) { flag=1;ch=chessboard[i+j][j]; } }if((chessboard[i+j][j]!=chessboard[i+j+1][j+1])&&(chessboard[i+j][j]!='+')) { playcount=0; } }playcount=0;}//对角线-1上//for(j=1;(j<chessboard_size-4)&&flag!=1;j++){for(i=0;(i<chessboard_size-1-j)&&flag!=1;i++) { if((chessboard[i][j+i]==chessboard[i+1][j+i+1])&&(chessboard[i][j+i]!='+')) { playcount=playcount+1; if(playcount==4) { flag=1;ch=chessboard[i][j+i]; } }if((chessboard[i][j+i]!=chessboard[i+1][j+i+1])&&(chessboard[i][j+i]!='+')) { playcount=0; } }playcount=0;}//****对角线1上扫描******//for(i=4;(i<chessboard_size)&&flag!=1;i++){for(j=0;(j<i+1)&&flag!=1;j++) { if((chessboard[i-j][j]==chessboard[i-j-1][j+1])&&(chessboard[i-j][j]!='+')) { playcount=playcount+1; if(playcount==4) { flag=1;ch=chessboard[i-j][j]; } }if((chessboard[i-j][j]!=chessboard[i-j-1][j+1])&&(chessboard[i-j][j]!='+')) { playcount=0; } }playcount=0;//上一组对角线如果没有出现5颗一样,就下一对角线时把playcount清零,再次判断}//******对角线1下*******//for(i=1;(i<chessboard_size-4)&&flag!=1;i++){for(j=chessboard_size-1;(j>i-2)&&flag!=1;j--) { if((chessboard[i+(chessboard_size-1-j)][j]==chessboard[i+(chessboard_size-1-j)+1][j-1])&&(chessboard[i+(chessboard_size-1-j)][j]!='+')) { playcount=playcount+1; if(playcount==4) { flag=1;ch=chessboard[i+(chessboard_size-1-j)][j]; } }if((chessboard[i+(chessboard_size-1-j)][j]!=chessboard[i+(chessboard_size-1-j)+1][j-1])&&(chessboard[i+(chessboard_size-1-j)][j]!='+')) { playcount=0; } }playcount=0;}}//judge函数完voidchess::gameover(){charagain='0';cout<<"是否再玩一局(y/n):";cin>>again;while(again!='y'&&again!='n'){cout<<"输入有误,请从新输入"; cin>>again; }if(again=='y'){ ch='0'; system("cls");}if(again=='n'){ ch='0';off=1;}}intmain(){chesslijin;while(1){lijin.init();while(ch!='A'&&ch!='B'){ lijin.gamestart(); lijin.judge(); system("cls");//c++中用这个命令来清屏 }while(ch=='A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 军事院校教务主任招聘合同
- 文化遗产保护与管理暂行办法
- 电影拍摄通讯设备租赁协议
- 2024年度农产品BB电商平台运营合同5篇
- 水利工程生态环境保护2024年度合同2篇
- 2024年度能源供应与购买合同5篇
- 2024年厂房扩建钢结构协议模板版B版
- 2024至2030年有柄钢丝笔扫项目投资价值分析报告
- 2024至2030年塑料吹膜凹版印刷机组项目投资价值分析报告
- 2024至2030年五层车项目投资价值分析报告
- 人教版小学四年级数学上册半期考试卷
- 最全公路资料目录整理
- 常用消防图例
- 现浇混凝土U型槽渠道施工技术方案
- 10KV台箱变试验方案
- 土地复垦整理工程质量保证措施
- 麓山国际社区最详细版个案(中)
- 班组长绩效考核表
- 校园管制刀具排查记录表(共1页)
- 07.双支节匹配 阻抗变换器
- 沥青软化点试验(环球法)
评论
0/150
提交评论