五子棋人人对战。。。。求大神改进优化算法
代码:
#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;
}