c++ 五子棋问题

来源:百度知道 编辑:UC知道 时间:2024/04/28 18:11:09
我的程序如下:问题是电脑不下棋没有‘C’出现它代表电脑下的棋子。
#include<iostream.h>
#include<stdlib.h>
const m=8;
const n=5;
void InitChess(char *);
void ShowChess(char *);
void HumanMove(char *);
char WinCheck(char *);
void ComputerMove(char *);
void main()
{
char chess[m*m];
char done;
cout<<"-------------------A Game of Chess-------------------"<<endl;
done='*';
InitChess(chess);
do
{
ShowChess(chess);
HumanMove(chess);
done=WinCheck(chess);
if(done!='*') break;
ComputerMove(chess);
done=WinCheck(chess);
}while(done=='*');
ShowChess(chess);
if(done=='H')
cout<<"下棋人获胜"<<endl;
else
cout<<"计算机获胜"<<endl;
}

void InitChess(char *chess)
{
for(int i=0;i<m;i++)
for(int j=0;j<m;j++)
chess[i*m+

void ComputerMove(char *chess)
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<m;j++)
if(chess[j+m*i]=='*') break;
if(i*j==m*m)
{
cout<<"平局"<<endl;
exit(0);
}
else
chess[j+m*i]='C';
}

以上函数中,if(chess[j+m*i]=='*') break; 不能跳出双重循环。

修改为:
void ComputerMove(char *chess)
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<m;j++)
if(chess[j+m*i]=='*') goto out;
out:
if(i*j==m*m)
{
cout<<"平局"<<endl;
exit(0);
}
else
chess[j+m*i]='C';
}
看看