该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
初学C语言,还不太懂,求dalao解答!
#include
int qipan[19][19];
int main()
{
int white=1;
int black=1;
int i, j;
int x, y;
int color = 0;
for (i = 0; i < 19; i++)
for (j = 0; j < 19; j++)
qipan[i][j] = 2;
while (1)
{
if (color == 1)
printf("白棋请落子:\n");
if (color == 0)
printf("黑棋请落子:\n");
scanf_s("%d %d", &x, &y);
if (qipan[x - 1][y - 1] != 2)
{
printf("该位置已有落子或落子位置超出棋盘范围!请重新输入:\n");
continue;
}
color = (color + 1) % 2;
qipan[x - 1][y - 1] = color;
for (i = 1; i <= 19; i++)
{
if (i == 1)
{
if (qipan[i - 1][0] == 1)//j=1
printf("●");
if (qipan[i - 1][0] == 0)//j=1
printf("○");
if (qipan[i - 1][0] == 2)//j=1
printf("┌");
for (j = 2; j <= 18; j++)
{
if (qipan[i - 1][j - 1] == 1)//j=1
printf("●");
if (qipan[i - 1][j - 1] == 0)//j=1
printf("○");
if (qipan[i - 1][j - 1] == 2)//j=1
printf("┬");
}
if (qipan[i - 1][18] == 1)//j=1
printf("●");
if (qipan[i - 1][18] == 0)//j=1
printf("○");
if (qipan[i - 1][18] == 2)//j=1
printf("┐");
printf("\n");
}
if (i <= 18 && i >= 2)
{
if (qipan[i - 1][0] == 1)//j=1
printf("●");
if (qipan[i - 1][0] == 0)//j=1
printf("○");
if (qipan[i - 1][0] == 2)//j=1
printf("├");
for (j = 2; j <= 18; j++)
{
if (qipan[i - 1][j - 1] == 1)//j=1
printf("●");
if (qipan[i - 1][j - 1] == 0)//j=1
printf("○");
if (qipan[i - 1][j - 1] == 2)//j=1
printf("┼");
}
if (qipan[i - 1][18] == 1)//j=1
printf("●");
if (qipan[i - 1][18] == 0)//j=1
printf("○");
if (qipan[i - 1][18] == 2)//j=1
printf("┤");
printf("\n");
}
if (i == 19)
{
if (qipan[i - 1][0] == 1)//j=1
printf("●");
if (qipan[i - 1][0] == 0)//j=1
printf("○");
if (qipan[i - 1][0] == 2)//j=1
printf("└");
for (j = 2; j <= 18; j++)
{
if (qipan[i - 1][j - 1] == 1)//j=1
printf("●");
if (qipan[i - 1][j - 1] == 0)//j=1
printf("○");
if (qipan[i - 1][j - 1] == 2)//j=1
printf("┴");
}
if (qipan[i - 1][18] == 1)//j=1
printf("●");
if (qipan[i - 1][18] == 0)//j=1
printf("○");
if (qipan[i - 1][18] == 2)//j=1
printf("┘");
printf("\n");
}
}
if (color == 1)
{
for (i = x - 2; i >= -1; i--)//统计同行左侧连续同样棋子个数。
if (qipan[i][y - 1] == 1)
black++;
else
break;
for (i = x; i < 19; i++)//统计同行右侧连续同样棋子个数。
if (qipan[i][y - 1] == 1)
black++;
else
break;
}
if (black >= 5)
break;
black = 1;
if (color == 1)
{
for (i = y; i < 19; i++)//统计同上侧连续同样棋子个数。
if (qipan[x - 1][i] == 1)
black++;
else
break;
for (i = y - 2; i >= -1; i--)//统计同行下侧连续同样棋子个数。
if (qipan[x - 1][i] == 1)
black++;
else
break;
}
if (black >= 5)
break;
black = 1;
if (color == 0)
{
for (i = x - 2; i >= -1; i--)//统计同行左侧连续同样棋子个数。
if (qipan[i][y - 1] == 0)
white++;
else
break;
for (i = x; i < 19; i++)//统计同行右侧连续同样棋子个数。
if (qipan[i][y - 1] == 0)
white++;
else
break;
}
if (white >= 5)
break;
white = 1;
if (color == 0)
{
for (i = y; i < 19; i++)//统计同上侧连续同样棋子个数。
if (qipan[x - 1][i] == 0)
white++;
else
break;
for (i = y - 2; i >= -1; i--)//统计同行下侧连续同样棋子个数。
if (qipan[x - 1][i] == 0)
white++;
else
break;
}
if (white >= 5)
break;
white = 1;
if (color == 1)
{
for (i = x - 2; i >= -1; i--)
for (j = y; j <19; j++)
{
if (qipan[i][j] == 1)
black++;
else
break;
}
for (i = x; i < 19; i++)
for (j = y - 2; j >= -1; j++)
if (qipan[i][j] == 1)
black++;
else break;
}
if (black >= 5)
break;
black = 1;
if (color == 1)
{
for (i = x; i < 19; i++)
for (j = y; j < 19; j++)
{
if (qipan[i][j] == 1)
black++;
else
break;
}
for(i = x - 2; i >= -1;i--)
for (j = y - 2; j >= -1; j--)
{
if (qipan[i][j] == 1)
black++;
else
break;
}
if (black >= 5)
break;
black = 1;
}
if (color == 1)
{
for (i = x; i < 19; i++)
for (j = y - 2; j >= -1; j--)
{
if (qipan[i][j] == 1)
black++;
else
break;
}
for (i = x - 2; x >= -1; x++)
for (j = y; j < 19; j++)
{
if (qipan[i][j] == 1)
black++;
else
break;
}
}
if (black >= 5)
break;
black = 1;
if (color == 0)
{
for (i = x - 2; i >= -1; i--)
for (j = y; j <19; j++)
{
if (qipan[i][j] == 0)
white++;
else
break;
}
for (i = x; i < 19; i++)
for (j = y - 2; j >= -1; j++)
if (qipan[i][j] == 0)
white++;
else break;
}
if (white >= 5)
break;
white = 1;
if (color == 0)
{
for (i = x; i < 19; i++)
for (j = y; j < 19; j++)
{
if (qipan[i][j] == 0)
white++;
else
break;
}
for (i = x - 2; i >= -1; i--)
for (j = y - 2; j >= -1; j--)
{
if (qipan[i][j] == 0)
white++;
else
break;
}
if (white >= 5)
break;
white = 1;
}
if (color == 0)
{
for (i = x; i < 19; i++)
for (j = y - 2; j >= -1; j--)
{
if (qipan[i][j] == 0)
white++;
else
break;
}
for (i = x - 2; x >= -1; x++)
for (j = y; j < 19; j++)
{
if (qipan[i][j] == 0)
white++;
else
break;
}
}
if (white >= 5)
break;
white = 1;
}
if (white == 5)
printf("白棋获胜!!!\n");
if (black == 5)
printf("黑棋获胜!!!\n");
}