简单的五子棋c++程序_第1页
简单的五子棋c++程序_第2页
简单的五子棋c++程序_第3页
简单的五子棋c++程序_第4页
简单的五子棋c++程序_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论