適合win10系統(tǒng)的c語(yǔ)言五子棋代碼?
#include <stdio.h>
#define N 16
//顯示五子棋棋盤
void wzq_show(char (*GAME)[N])
{
int i=0,j=0;
printf("五子棋棋盤如下:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%c ",GAME[i][j]);
}
printf("\n");
}
}
//初始化五子棋棋盤
void wzq_init(char (*GAME)[N])
{
int i=0,j=0;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
GAME[i][j]='+';
}
}
//memset(GAME,'+',N*N);
}
//游戲是否勝利的運(yùn)算,一旦有人勝利則返回1
int wzq_play(int a,int b,char (*GAME)[N])
{
int i=0,j=0,k=0;
//方向-上的
for(j=b-4;j<b+4;j++)
{
if(j<0 || j>N-1)
{
continue;
}
for(i=0;i<5;i++)
{
if('@'==GAME[a][j+i] ||'+'==GAME[a][j+i])
{
break;
}
if('O'==GAME[a][j+i] &&4==i)
{
printf("\n恭喜你,白家-方向上獲勝!\n");
return 1;
}
}
}
//方向|上的
for(i=a-4;i<a+4;i++)
{
if(i<0 || i>N-1)
{
continue;
}
for(j=0;j<5;j++)
{
if('@'==GAME[i+j][b] ||'+'==GAME[i+j][b])
{
break;
}
if('O'==GAME[i+j][b] &&4==j)
{
printf("\n恭喜你,白家|方向上獲勝!\n");
return 1;
}
}
}
//方向\上的
for(i=a-4,j=b-4;i<a+4 && j<b+4;i++,j++)
{
if(i<0 || i>N-1 || j<0 || j>N-1)
{
continue;
}
for(k=0;k<5;k++)
{
if('@'==GAME[i+k][j+k] ||'+'==GAME[i+k][j+k])
{
break;
}
if('O'==GAME[i+k][j+k] &&4==k)
{
printf("\n恭喜你,白家\方向上獲勝!\n");
return 1;
}
}
}
//方向/上的
for(i=a+4,j=b-4;i>a-4 && j<b+4;i--,j++)
{
if(i<0 || i>N-1 || j<0 || j>N-1)
{
continue;
}
for(k=0;k<5;k++)
{
if('@'==GAME[i-k][j+k] ||'+'==GAME[i-k][j+k])
{
break;
}
if('O'==GAME[i-k][j+k] &&4==k)
{
printf("\n恭喜你,白家/方向上獲勝!\n");
return 1;
}
}
}
return 0;
}
int main()
{
char GAME[N][N]={0};
int count=0;//輪換落子計(jì)算
int m=0,n=0;//白家
int x=0,y=0;//黑家
int res=0;
int k=0;
wzq_init(GAME);
wzq_show(GAME);
while(1)
{
//當(dāng)棋盤格子被下滿了時(shí)
if(N*N==count)
{
printf("棋盤已經(jīng)下滿了,平局!\n");
return 0;
}
if(0==count%2)
{
printf("請(qǐng)白家落子(例如0 3或1 3):");
scanf("%d%d",&m,&n);
while(m<0 || m>N-1 || n<0 || n>N-1)
{
printf("輸入的坐標(biāo)超出范圍,請(qǐng)重新輸入:");
scanf("%d%d",&m,&n);
}
while('+'!=GAME[m][n])
{
printf("此處已經(jīng)落過(guò)子,請(qǐng)重新落子:");
scanf("%d%d",&m,&n);
}
GAME[m][n]='O';
res=wzq_play(m,n,GAME);
if(1==res)
{
wzq_show(GAME);
printf("程序結(jié)束\n");
return 0;
}
}else
{
printf("請(qǐng)黑家落子(例如0 3或1 3):");
scanf("%d%d",&x,&y);
while(m<0 || m>N-1 || n<0 || n>N-1)
{
printf("輸入的坐標(biāo)超出范圍,請(qǐng)重新輸入:");
scanf("%d%d",&m,&n);
}
while('+'!=GAME[x][y])
{
printf("此處已經(jīng)落過(guò)子,請(qǐng)重新落子:");
scanf("%d%d",&x,&y);
}
GAME[x][y]='@';
res=wzq_play(x,y,GAME);
if(1==res)
{
wzq_show(GAME);
printf("程序結(jié)束\n");
return 0;
}
}
count++;
wzq_show(GAME);
}
}