五子棋人人对战。。。。求大神改进优化算法

xuqingxiang1990 xuqingxiang1990 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
代码:
#include<stdio.h>

void print_chess(int a[][10])
{
int i,j;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
a[i][j]=0;

printf(" ");
for(i=0;i<10;i++)
printf("%2d",i);
putchar(10);
printf(" ");
for(i=0;i<10;i++)
printf(" _");
putchar(10);

for(i=0;i<10;i++)
{
printf("%2d|",i);
for(j=0;j<10;j++)
{
printf("%2d",a[i][j]);
}
putchar(10);
}
}


int foo(int x,int y,int z,int a[][10])
{
int i,j;
a[x][y]=z;
printf(" ");
for(i=0;i<10;i++)
printf("%2d",i);
putchar(10);

printf(" ");
for(i=0;i<10;i++)
printf(" _");
putchar(10);

for(i=0;i<10;i++)
{
printf("%2d|",i);
for(j=0;j<10;j++)
{
printf("%2d",a[i][j]);
}
putchar(10);
}

}

int my_scanf(int p,int *a,int *b,int c[][10])
{
while(1)
{
printf("player%d\n",p);
scanf("%d%d",a,b);
if(*a>10||*b>10||c[*a][*b]!=0)
{
printf("%d %d is not permitted! pleare reininput\n",*a,*b);
continue;
}
else
break;
}
}

int decide(int a[][10], int *pa, int *pb, int person)//判断;
{
int i, j, cont = 0;
for(i=*pa; i<10; i++) {
if(a[i][*pb]==person)
cont++;
else
break;
if(cont==5)
return cont;
}
cont=0;
for(i=*pa; i>=0; i--) {
if(a[i][*pb]==person)
cont++;
else
break;
if(cont==5)
return cont;
}
cont=0;
for(j=*pb; j>=0; j--) {
if(a[*pa][j]==person)
cont++;
else
break;
if(cont==5)
return cont;
}
cont=0;
for(j=*pb; j<10; j++) {
if(a[*pa][j]==person)
cont++;
else
break;
if(cont==5)
return cont;
}


cont=0;
for(j=*pb, i=*pa; i<10&&j<10; i++, j++) {
if(a[i][j]==person)
cont++;
else
break;
if(cont==5)
return cont;
}
cont=0;
for(j=*pb, i=*pa; i>=0&&j>=0; i--, j--) {
if(a[i][j]==person)
cont++;
else
break;
if(cont==5)
return cont;
}
cont=0;
for(j=*pb, i=*pa; i>=0&&j<10; i--, j++) {
if(a[i][j]==person)
cont++;
else
break;
if(cont==5)
return cont;
}
cont=0;
for(j=*pb, i=*pa; i<10&&j>=0; i++, j--) {
if(a[i][j]==person)
cont++;
else
break;
if(cont==5)
return cont;
}
return 0;

}



int main()
{
int a,b,c[10][10];
int count1,count2;
printf("start game\n");
print_chess(c);
while(1)
{
my_scanf(1,&a,&b,c);
foo(a,b,1,c);
count1=decide(c,&a,&b,1);
if(count1==5)
{
printf("you are clever");
break;
}

my_scanf(2,&a,&b,c);
foo(a,b,2,c);
count2=decide(c,&a,&b,2);
if(count2==5)
{
printf("you are clever");
break;
}
}
putchar(10);
return 0;
}
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
xuqingxiang1990
C语言 70,039 成员 243,237 内容