《C++语言程序设计》课程设计报告--五子棋(2)

2019-03-04 12:03

while(x<1||x>20||y<1||y>20) {

cout<<\出界,请重新输入:\ cin>>x>>y; cout<

board[y-1][x-1]='o';

num_xy++; }

bool MyGobang::isFirstWin()//判断第一人是否赢 {

int num1=1,num2=1,num3=1,num4=1; int i,j;

//这里是判断X坐标向右的'0'连续数 for(i=x;i<=x+3&&i<20;i++) {

if(board[y-1][i]=='o') num1++; else break; }

//这里是判断X坐标向左的'0'连续数 for(i=x-2;0<=i&&i>=x-5;i--) {

if(board[y-1][i]=='o') num1++; else break; }

//这里是判断Y坐标向下的'0'连续数 for(j=y;j<20&&j<=y+3;j++) {

if(board[j][x-1]=='o') num2++; else break;

}

//这里是判断Y坐标向上的'0'连续数 for(j=y-2;j>=0&&j>=y-5;j--) {

if(board[j][x-1]=='o') num2++; else break;

}

//这里是判断右斜上'0'连续数

for(i=x,j=y;i<20&&j<20&&i<=x+3&&j<=y+3;i++,j++) {

if(board[j][i]=='o') num3++; else break; }

//这里是判断左斜下'0'连续数

for(i=x-2,j=y-2;i>=0&&j>=0&&i>=i-5&&j>=5;i--,j--) {

if(board[j][i]=='o') num3++; else break; }

//这里是判断左斜上'0'连续数

for(i=x-2,j=y;i>=0&&j<20&&i>=x-5&&j<=y+3;i--,j++) {

if(board[j][i]=='o') num4++; else break;

}

//这里是判断右斜下'0'连续数

for(i=x,j=y-2;i<20&&j>=0&&i<=x+3&&j>=y-5;i++,j--) {

if(board[j][i]=='o') num4++; else break;

}

if(num1==5||num2==5||num3==5||num4==5) return 1;

// 这里总结 X,Y ,左斜,右斜 的'0'连续数,有等于五的就直接返回 1 否则返回0 else return 0;

}

void MyGobang::getPointMN()//第二人落子函数

{

cout<<\请输入第\步黑旗X,Y的坐标(x,y在1和20之间):\ cin>>m>>n;

cout<

while(m<1||m>20||n<1||n>20) {

cout<<\出界,请重新输入:\ cin>>m>>n; cout<

while(board[n-1][m-1]!='.') {

cout<<\该位置已被占,重新输入:\ cin>>m>>n; cout<

while(m<1||m>20||n<1||n>20) {

cout<<\出界,请重新输入:\ cin>>m>>n; cout<

board[n-1][m-1]='x'; num_mn++;

}

bool MyGobang::isSecondWin()//第二人是否赢 {

int num1=1,num2=1,num3=1,num4=1; int i,j;

for(i=m;i<=m+3&&i<20;i++) {

if(board[n-1][i]=='x') num1++; else break; }

for(i=m-2;0<=i&&i>=m-5;i--) {

if(board[n-1][i]=='x') num1++; else break;

}

for(j=n;j<20&&j<=n+3;j++) {

if(board[j][m-1]=='x') num2++; else break; }

for(j=n-2;j>=0&&j>=n-5;j--) {

if(board[j][m-1]=='x') num2++; else break; }

for(i=m,j=n;i<20&&j<20&&i<=m+3&&j<=n+3;i++,j++) {

if(board[j][i]=='x') num3++; else break; }

for(i=m-2,j=n-2;i>=0&&j>=0&&i>=i-5&&j>=5;i--,j--) {

if(board[j][i]=='x') num3++; else break;

}

for(i=m-2,j=n;i>=0&&j<20&&i>=m-5&&j<=n+3;i--,j++) {

if(board[j][i]=='x') num4++; else break; }

for(i=m,j=n-2;i<20&&j>=0&&i<=m+3&&j>=n-5;i++,j--) {

if(board[j][i]=='x') num4++; else break;

}

if(num1==5||num2==5||num3==5||num4==5) return 1; else return 0; }

int main()

{

cout<<\五子棋*****************\

MyGobang gobang; gobang.printBoard ();//申明MYGobang类的一个对象 for(int i=0;;i++)

{

gobang.getPointXY();//调用这个函数 gobang.printBoard ();//调用绘制棋盘

if(gobang.isFirstWin ()!=0)//调用第一人是否赢的函数 {

cout<<\白棋胜利***************\ break;

}

gobang.getPointMN(); gobang.printBoard (); if(gobang.isSecondWin ()!=0)

{

cout<<\黑棋胜利***************\ break; } }

system(\ }


《C++语言程序设计》课程设计报告--五子棋(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:常用护理文件的书写规范

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: