是黑白棋的一种。三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。但是,有很多时候会出现和棋的情况。游戏规则:如果两个人都掌握了技巧,那么一般来说就是平棋。一般来说,第二步下在中间最有利(因为第一步不能够下在中间),下在角上次之,下在边上再次之。最大的好处就是随便找个地方就可以玩这个简单而有趣的游戏了。
水平是一个词语,有多种不同解释,指平行于水面的水平线,又可用于表示在某一专业方面所达到的高度,也可表示统计学水平(Level),在铁道工程上,水平是指线路左右两股钢轨顶面的相对高差。
#include<stdio.h>int main()
{
void picture(char a[3][3])
int Osheng(char a[3][3])
int Xsheng(char a[3][3])
int ping(char a[3][3])
int i,j,x,y
char a[3][3]
for(i=0i<3i++)
for(j=0j<3j++)
a[i][j]=' '
picture(a)
while(1)
{
int a1=1
while(1)//下X子
{
for(a1)
{
printf("请输入O子下的位置: ")//输入o子的位置
scanf("%d%d",&x,&y)
if(a[x][y]=='O'||a[x][y]=='X')//判断是否已有子
{
printf("已有子请重下")
continue
}
else if(x>=3||y>=3)
{
printf("输入错误请重输")
continue
}
else
{
a[x][y]='O'
a1=0
}
break
}
break
}
picture(a)//下好O子后将棋盘显示
if(Osheng(a))
{
printf("O子获胜")
break
}
while(1)//下X子
{
printf("请输入X子下的位置: ")//输入O子的位置
scanf("%d%d",&x,&y)
if(a[x][y]=='O'||a[x][y]=='X')//判断是否已有子
{
printf("已有子请重下")
continue
}
else if(x>=3||y>=3)
{
printf("输入错误请重输")
printf("请输入X子下的位置: ")
scanf("%d%d",&x,&y)
continue
}
a[x][y]='X'
break
}
picture(a)
if(Xsheng(a))
{
printf("X子获胜")
break
}
if(ping(a))
{
printf("平局")
break
}
}
int Osheng(char a[3][3])
{
int i,j
for(i=0i<3i++)
for(j=0j<3j++)
if(a[i][j]=='O'&&a[i][j+1]=='O'&&a[i][j+2]=='O')
return 1
for(i=0i<3i++)
for(j=0j<3j++)
if(a[i][j]=='O'&&a[i+1][j]=='O'&&a[i+2][j]=='O')
return 1
if(a[1][1]=='O'&&a[2][2]=='O'&&a[3][3]=='O')
return 1
if(a[1][3]=='O'&&a[2][2]=='O'&&a[3][1]=='O')
return 1
return 0
}
int Xsheng(char a[3][3])【就是在这里错的】
{
int i,j
for(i=0i<3i++)
for(j=0j<3j++)
if(a[i][j]=='X'&&a[i][j+1]=='X'&&a[i][j+2]=='X')
return 1
for(i=0i<3i++)
for(j=0j<3j++)
if(a[i][j]=='X'&&a[i+1][j]=='X'&&a[i+2][j]=='X')
return 1
if(a[1][1]=='X'&&a[2][2]=='X'&&a[3][3]=='X')
return 1
if(a[1][3]=='X'&&a[2][2]=='X'&&a[3][1]=='X')
return 1
return 0
}
int ping(char a[3][3])
{
int i,j
for(i=0i<3i++)
for(j=0j<3j++)
{
if(a[i][j]==' ')
return 0
}
return 1
}
void picture(char a[3][3])
{
printf("%c|%c|%c\n",a[0][0],a[0][1],a[0][2])
printf("-+-+-\n")
printf("%c|%c|%c\n",a[1][0],a[1][1],a[1][2])
printf("-+-+-\n")
printf("%c|%c|%c\n",a[2][0],a[2][1],a[2][2])
}