1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > c语言黑白棋人人对战源代码 最近无聊在写奥赛罗(黑白棋) 求关于落棋可行判定的思路...

c语言黑白棋人人对战源代码 最近无聊在写奥赛罗(黑白棋) 求关于落棋可行判定的思路...

时间:2023-08-16 05:16:45

相关推荐

c语言黑白棋人人对战源代码 最近无聊在写奥赛罗(黑白棋) 求关于落棋可行判定的思路...

该楼层疑似违规已被系统折叠隐藏此楼查看此楼

#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();

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。