该楼层疑似违规已被系统折叠隐藏此楼查看此楼
#include
struct coordinate
{
int x;
int y;
}direct[8]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
char map[10][10];
char p[3];
//地图类
int exitcode;
int flag;
//开关类
int me,op;
int d;
//控制变量类
int num[2];
int temp;
//普通记录变量类
void initmap()
{
memset(map,0,sizeof(map));
int i,j;
for (i=0;i<10;i++)
for (j=0;j<10;j++)
map[i][j]=p[3];
map[4][4]=p[me];
map[5][5]=p[me];
map[4][5]=p[op];
map[5][4]=p[op];
}
void init()
{
num[0]=2;
num[1]=2;
me=0;
op=1;
p[me]='*';
p[op]='@';
p[3]='.';
exitcode=2;
initmap();
}
void printmap()
{
int i,j;
printf(" 1 2 3 4 5 6 7 8\n");
for (i=1;i<=8;i++)
{
printf("%d",i);
for (j=1;j<=8;j++)
printf(" %c",map[i][j]);
printf("\n");
}
printf("\n");
printf("%c --- %d\n",p[0],num[0]);
printf("%c --- %d\n",p[1],num[1]);
printf("\n");
}
void change()
{
temp=me;
me=op;
op=temp;
}
int search(int i,int j,int step)
{
if (map[i][j]==p[3])
return 0;
else if (map[i][j]==p[me])
return step-1;
else if (step=search(i+direct[d].x,j+direct[d].y,step+1))
map[i][j]=p[me];
return step;
}
void sortgame()
{
int i,j;
while (exitcode)
{
printmap();
i=0;
j=0;
printf("%c's turn.Your coordinate(y,x):",p[me]);
scanf("%d,%d",&i,&j);
while ((i<1)||(i>8)||(j<1)||(j>8))
{
printf("You have entered an unreachable position, please input again.\n");
printf("%c's turn.Your coordinate(x,y):",p[me]);
scanf("%d,%d",&i,&j);
}
flag=0;
for (d=0;d<8;d++)
if (temp=search(i+direct[d].x,j+direct[d].y,1))
{
num[me]+=temp;
num[op]-=temp;
flag=1;
}
if (!flag)
{
exitcode--;
printf("Unusable step.\n");
}
else
{
map[i][j]=p[me];
num[me]++;
exitcode=2;
}
change();
}
printf("Either of you have no way to go, game exit.\n");
}
main()
{
init();
sortgame();
getch();
}