程序分如下部分:
编号 | 部分 |
---|---|
1 | 光标移动 |
2 | 绘制棋盘 |
3 | 绘制棋子 |
4 | 胜利条件 |
5 | 读入坐标 |
6 | 主程序段 |
光标移动
void gotoxy(int x,int y)
{
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X=x;
pos.Y=y;
SetConsoleCursorPosition(hout,pos);
}
绘制棋盘
void drawchessboard()//画出棋盘边缘行列数字
{
int i;
cout<<" ";
for(i=0;i<10;i++)
{
if(i==9)
{
cout<<i<<endl;
}
else
{
cout<<i<<" ";
}
}
for(i=0;i<10;i++)
{
cout<<i<<endl;
}
cout<<"--------------------"<<endl;
}
void printchessboard()
{
for(int i=0;i<=9;i++)
{
for(int j=0;j<=9;j++)
{
int xx=2*j+2,yy=i+1;
gotoxy(xx,yy);
if(mat[i][j]==0) putch(' ');
else if(mat[i][j]==1) putch('O');
else putch('X');
}
}
}
绘制棋子
void printchessboard()
{
for(int i=0;i<=9;i++)
{
for(int j=0;j<=9;j++)
{
int xx=2*j+2,yy=i+1;
gotoxy(xx,yy);
if(mat[i][j]==0) putch(' ');
else if(mat[i][j]==1) putch('O');
else putch('X');
}
}
}
胜利条件
int Judge_End()//判断游戏是否结束,返回0表示没有结束;返回1表示1号玩家胜利;返回2表示2号玩家胜利
{
int i,j,k,l;
short u1,u2;
u1=u2=0;
for(i=0;i<10;i++)//判断横向
{
u1=u2=0;
for(j=0;j<10;j++)
{
if(mat[i][j]==1)
{
u2=0;
u1++;
}
else if(mat[i][j]==2)
{
u1=0;u2++;
}
else if(mat[i][j]==0)
{
u1=0;u2=0;
}
if(u1==5)
{
system("cls");
cout<<"1号玩家胜利!"<<endl;
return 1;
}
else if(u2==5)
{
system("cls");
cout<<"2号玩家胜利!"<<endl;
return 2;
}
}
}
u1=u2=0;
for(i=0;i<10;i++)//判断竖向
{
u1=u2=0;
for(j=0;j<10;j++)
{
if(mat[j][i]==1)
{
u2=0;
u1++;
}
else if(mat[j][i]==2)
{
u1=0;
u2++;
}
else if(mat[j][i]==0)
{
u1=0;u2=0;
}
if(u1==5)
{
system("cls");
cout<<"1号玩家胜利!"<<endl;
return 1;