#include <stdio.h>
#include <string.h>
#define N 15
int qipan[N][N];
int test_win(int x, int y, int qipan[][N]); //XY任意一人下的子的位置
{
int i = 0;
int j = 0;
if (qipan[i][j] != 0))
{for (i = 0; i < N; i++)
{
for (j = 0; j < N - 4; j++)
{
if (qipan[i][j] == qipan[i][j + 1]
&& qipan[i][j + 1] == qipan[i][j + 2]
&& qipan[i][j + 2] == qipan[i][j + 3]
&& qipan[i][j + 3] == qipan[i][j + 4] //横着检查
)
{
return qipan[i][j]; //返回数值1/2
}
if (qipan[i][j] == qipan[i + 1][j]
&& qipan[i + 1][j] == qipan[i + 2][j]
&& qipan[i + 2][j] == qipan[i + 3][j]
&& qipan[i + 3][j] == qipan[i + 4][j]) //竖着
{
return qipan[i][j];
}
if (qipan[i][i] == qipan[i + 1][i + 1]
&& qipan[i + 1][i + 1] == qipan[i + 2][i + 2]
&& qipan[i + 2][i + 2] == qipan[i + 3][i + 3]
&& qipan[i + 3][i + 3] == qipan[i + 4][i + 4]) //往右下斜
{
return qipan[i][j];
}
if (qipan[i][i] == qipan[i - 1][i + 1]
&& qipan[i - 1][j + 1] == qipan[i - 2][j + 2]
&& qipan[i - 2][j + 2] == qipan[i - 3][j + 3]
&& qipan[i - 3][j + 3] == qipan[i - 4][i + 4]) //右上斜
{
return qipan[i][j];
}
}
}
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
if (qipan[i][j] == 0)
{
return 3; //返回3继续游戏
}
}
}
//游戏结束
return 4; //得到结果为4平局
}
这是一个使用C语言编写的五子棋游戏的胜负判定模块。通过遍历棋盘矩阵,检查行、列、对角线方向是否形成连续五个相同棋子,以判断游戏结果。如果找到连续五个相同棋子,则返回对应棋子的值(1或2),否则检查是否有空位,若有返回3继续游戏,否则返回4表示平局。
1885





