int main()
{
int i,j;//棋盘坐标
int qipan[20][20];//规定棋盘大小
// 绘制棋盘
int qizi=-1;
int qizicount=1;
int tj,ti;
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
{
qipan[i][j]=2;
}
} //历遍棋盘,赋值为2;
while(1)
{
printf("请输入棋子位置如2,2\n");
scanf("%d,%d",&i,&j);
if(i<1||i>20||j<1||j>20)
{
printf("棋子超出棋盘位置,请重新输入");
continue; //跳过下列循环语句 从头开始循环
}
if((qipan[i-1][j-1]!=2))
{
printf("此位置已有棋子请重新输入");
fflush(stdin);
continue;
}
qizi=(qizi+1)%2;
qipan[i-1][j-1]=qizi; //输入黑棋位置
for(i=0;i<20;i++)
{
if(i==0) //第一行
{
for(j=0;j<20;j++)
{
if(j==0) //第一列
{
if(qipan[i][j]==2)
printf("┌ ");
else if(qipan[i][j]==0)
printf("●");
else if(qipan[i][j]==1)
printf("○");
}
else if(j>0&&j<19)
{
if(qipan[i][j]==2)
printf("┬ ");
else if(qipan[i][j]==0)
printf("●");
else if(qipan[i][j]==1)
printf("○");
}
else if(j==19)
{
if(qipan[i][j]==2)
printf("┐");
else if(qipan[i][j]==0)
printf("●");
else if(qipan[i][j]==1)
printf("○");
}
}
printf("\n");
}
else if(i>0&&i<19) // 1到19行
{
for(j=0;j<20;j++)
{
if(j==0)
{
if(qipan[i][j]==2)
printf("├ ");
else if(qipan[i][j]==0)
printf("●");
else if(qipan[i][j]==1)
printf("○");
}
else if(j>0&&j<19)
{
if(qipan[i][j]==2)
printf("┼ ");
else if(qipan[i][j]==0)
printf("●");
else if(qipan[i][j]==1)
printf("○");
}
else if(j==19)
{
if(qipan[i][j]==2)
printf("┤");
else if(qipan[i][j]==0)
printf("●");
else if(qipan[i][j]==1)
printf("○");
}
}
printf("\n");
}
else if(i==19)
{
for(j=0;j<20;j++)
{
if(j==0)
{
if(qipan[i][j]==2)
printf("└ ");
else if(qipan[i][j]==0)
printf("●");
else if(qipan[i][j]==1)
printf("○");
}
else if(j>0&&j<19)
{
if(qipan[i][j]==2)
printf("┴ ");
else if(qipan[i][j]==0)
printf("●");
else if(qipan[i][j]==1)
printf("○");
}
else if(j==19)
{
if(qipan[i][j]==2)
printf("┘");
else if(qipan[i][j]==0)
printf("●");
else if(qipan[i][j]==1)
printf("○");
}
}
printf("\n");
}
} //以上为绘制棋盘棋子
for(i=0;i<20;i++) //横方向判断
{
for(j=0;j<20;j++)
{
if(qipan[i][j]!=2)
{
ti=i;tj=j;
for(tj=j+1;qipan[ti][tj]!=2&&tj<19;tj++){
if(qipan[ti][tj]==qipan[ti][tj-1])
qizicount++;
else break;
if(qizicount==5)
break;}
}
if(qizicount==5)
{
if(qipan[ti][tj]==0)
printf("白棋赢了");
else if(qipan[ti][tj]==1)
printf("黑棋赢了");
}
else qizicount=1;
if (qizicount==5)
break;
}
if (qizicount==5)
break;
}
for(j=0;j<20;j++) //竖方向判断
{
for(i=0;i<20;i++)
{
if(qipan[i][j]!=2)
{
tj=j;
for(ti=i;qipan[ti+1][tj]==qipan[ti][tj]&&tj<19;ti++){
qizicount++;
if(qizicount==5)
break;}
}
if(qizicount==5)
{
if(qipan[ti][tj]==0)
printf("白棋赢了");
else if(qipan[ti][tj]==1)
printf("黑棋赢了");
}
else qizicount=1;
if(qizicount==5)
break;
}
if(qizicount==5)
break;
}
for(i=0;i<20;i++) //从左上到右下
{
for(j=0;j<20;j++)
{
if(qipan[i][j]!=2)
for(tj=j,ti=i;qipan[ti][tj]!=2&&tj<19;tj--,ti--){
if(qipan[ti][tj]==qipan[ti-1][tj-1])
qizicount++;
else break;
if(qizicount==5)
break;}
}
if(qizicount==5)
{
if(qipan[ti][tj]==0)
printf("白棋赢了");
else if(qipan[ti][tj]==1)
printf("黑棋赢了");
}
else qizicount=1;
if(qizicount==5)
break;
}
for(i=0;i<20;i++) //右上到左下
{
for(j=0;j<20;j++)
{
if(qipan[i][j]!=2)
for(tj=j,ti=i;qipan[ti][tj]!=2&&tj<19;tj++,ti--){
if(qipan[ti][tj]==qipan[ti-1][tj+1])
qizicount++;
else break;
if(qizicount==5)
break;}
}
if(qizicount==5)
{
if(qipan[ti][tj]==0)
printf("白棋赢了");
else if(qipan[ti][tj]==1)
printf("黑棋赢了");
}
else qizicount=1;
if(qizicount==5)
break;
}
if(qizicount==5)
{
break;
}
}
return 0;
}
/*************************************************
*
*绘制表格需要的字符:┌ ┬ ┐├ ┼ ┤└ ┴ ┘│─●○
*数组的值1表示黑棋,0表示白棋,2表示该位置没有棋
*
*/
萌新上路代码不完善请多指教;