#include<stdio.h>
#define xline 9
#define yline 9
#define number
void menu()
{
printf("*******************五子棋********************\n");
printf("*****请选择 1 开始游戏 0 退出游戏 *****\n");
printf("*********************************************\n");
}
void InitBoard(char arr[xline][yline],int x,int y)//初始化
{
int i=0;
int j=0;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
arr[i][j]=' ';
}
}
}
void DisplayBoard(char arr[xline][yline],int x,int y)
{
int i=0;
int j=0;
printf("\n");
for(i=1;i<=x;i++)
{
if(i==1)
{
printf(" %d ",i);
}
else
{
printf(" %d ",i);
}
}
printf("\n");
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
if(j==0)
{
printf("%d",i+1);
}
printf(" %c ",arr[i][j]);
if(j<y-1)
{
printf("|");
}
}
printf("\n");
if(i<x-1)
{
for(j=0;j<y;j++)
{
if(j==0)
{
printf(" ");//
}
printf("---");
if(j<y-1)
{
printf("|");
}
}
}
printf("\n");
}
}
void Player1(char arr[xline][yline],int x,int y)
{
int i=0;
int j=0;
printf("请输入想下的位置(行和列)\n");
scanf("%d%d",&i,&j);
while(i>x||i<1||j>y||j<1||arr[i-1][j-1]!=' ')
{
printf("输入无效,请重新输入\n");
scanf("%d%d",&i,&j);
}
arr[i-1][j-1]='O';
}
void Player2(char arr[xline][yline],int x,int y)
{
int i=0;
int j=0;
printf("请输入想下的位置(行和列)\n");
scanf("%d%d",&i,&j);
while(i>x||i<1||j>y||j<1||arr[i-1][j-1]!=' ')
{
printf("输入无效,请重新输入\n");
scanf("%d%d",&i,&j);
}
arr[i-1][j-1]='X';
}
char IsWin(char arr[xline][yline],int x,int y)
{
int i=0;
int j=0;
for(i=0;i<x;i++)
{
for(j=0;j<y-5;j++)
{
if(arr[i][j]==arr[i][j+1]&&arr[i][j+1]==arr[i][j+2]&&arr[i][j+2]==arr[i][j+3]&&arr[i][j+3]==arr[i][j+4]&&arr[i][j]!=' ')
{
if(arr[i][j]=='O')
{
return 'O';
}
else
{
return 'X';
}
}
}
}
for(j=0;j<y;j++)
{
for(i=0;i<x-5;i++)
{
if(arr[i][j]==arr[i+1][j]&&arr[i+1][j]==arr[i+2][j]&&arr[i+2][j]==arr[i+3][j]&&arr[i+3][j]==arr[i+4][j]&&arr[i][j]!=' ')
{
if(arr[i][j]=='O')
{
return 'O';
}
else
{
return 'X';
}
}
}
}
for(i=0;i<x-5;i++)
{
for(j=0;j<y-5;j++)
{
if(arr[i][j]==arr[i+1][j+1]&&arr[i+1][j+1]==arr[i+2][j+2]&&arr[i+2][j+2]==arr[i+3][j+3]&&arr[i+3][j+3]==arr[i+4][j+4]&&arr[i][j]!=' ')
{
if(arr[i][j]=='O')
{
return 'O';
}
else
{
return 'X';
}
}
}
}
for(i=x-1;i>3;i--)
{
for(j=0;j<y-5;j++)
{
if(arr[i][j]==arr[i-1][j+1]&&arr[i-1][j+1]==arr[i-2][j+2]&&arr[i-2][j+2]==arr[i-3][j+3]&&arr[i-3][j+3]==arr[i-4][j+4]&&arr[i][j]!=' ')
{
if(arr[i][j]=='O')
{
return 'O';
}
else
{
return 'X';
}
}
}
}
return 'C';
}
void game(char arr[xline][yline],int x,int y)
{
while(IsWin(arr,x,y)=='C')
{
DisplayBoard(arr,x,y);
Player1(arr,x,y);
int ret=0;
ret=IsWin(arr,x,y);
if(ret!='C')
{
break;
}
DisplayBoard(arr,x,y);
Player2(arr,x,y);
ret=IsWin(arr,x,y);
if(ret!='C')
{
break;
}
}
if(IsWin(arr,x,y)=='O')
{
DisplayBoard(arr,x,y);
printf("O获胜\n");
}
if(IsWin(arr,x,y)=='X')
{
DisplayBoard(arr,x,y);
printf("X获胜\n");
}
}
int main()
{
char arr1[xline][yline]={};
int input=0;
menu();
scanf("%d",&input);
while(input)
{
if(input==1)
{ InitBoard(arr1,xline,yline);
game(arr1,xline,yline);
printf("是否继续游戏; 1 继续 0 退出\n");
scanf("%d",&input);
}
else
{
printf("输入错误,请重新输入\n");
scanf("%d",&input);
}
}
printf("游戏结束\n");
return 0;
}
如有错误,欢迎指正(#^.^#)