五子棋的游戏规律我们都知道,横竖五个棋子一样就赢了,斜5个一样就赢了,我们首先定义一个判断函数,每次判断他赢没赢。赢得话返回一,没赢继续,
#include<stdio.h>
#define N 10//N*N大小的棋盘
void Fz(char Arr[N][N])
{
int j,k;
for(k = 0;k < N;k++)
for(j = 0;j < N;j++)
{
Arr[k][j] = ' ';
}
}
int panDuan(char Arr[N][N],int temp)
{
int i,j;
for(i = 0;i < N;i++)
{
for(j = 0;j < N;j++)
{
if(Arr[i][j] == temp)
{
if(Arr[i][j+1] == temp && Arr[i][j+2] == temp) return temp;
if(Arr[i+1][j+1] == temp && Arr[i+2][j+2] == temp) return temp;
if(Arr[i+1][j] == temp && Arr[i+2][j] == temp) return temp;
if(Arr[i+1][j-1] == temp && Arr[i+2][j-2] == temp) return temp;
}
}
}
return 0;
}
void Scan(int Arr[N][N])
{
for(int h1 = 0;h1 < N;h1++)
{
for(int h2 = 0 ;h2 < N;h2++)
{
printf("%7d",Arr[h1][h2]);
}
printf("\n");
}
}
int main()
{
fz();
for(k = 0;k < N*N;k++)
{
int a,b; //白方走棋位置
int w = 0;
printf("甲走棋:");
scanf("%d%d",&a,&b);
Arr[a][b] = 'X';
Scan(Arr);
w = panDuan(Arr,1);
if(w == 1)
{
printf("游戏结束,黑方胜利");
break;
}
int c,d; //黑方走棋位置
printf("黑棋走棋:");
Scan(Arr);
w = panDuan(Arr,2);
if(w == 2)
{
printf("游戏结束,白方胜利");
break;
}
}
return 0;
}