else if (j == 14)
draw_chessman(chessboard[i][j], "┘ ");
else
draw_chessman(chessboard[i][j], "┴ ");
}
printf("\n");//最后一行└┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┘
} else {
for (int j = 0; j < col; j++) {
if (j == 0)
draw_chessman(chessboard[i][j], "├ ");
else if (j == 14)
draw_chessman(chessboard[i][j], "┤");
else
draw_chessman(chessboard[i][j], "┼ ");
}
printf("\n");//其他行├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤
}
}
}
3、判断胜负
五子棋连成五子即为胜,判断输赢须在一个棋子的上、下、左、右、右上、右下、左上、左
上共八个方向遍历是否有相连的五子。但可以发现上和下在一条线上,左和右在一条线上,
依此类推只需判断四个方向,即横、竖、左斜、右斜方向。
//返回当前棋子的值,若值为 1,代表黑棋胜,若值为-1,代表白棋胜
int is_win(int chessboard[][MAX_COL], int row, int col) {
int i, j;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
if (chessboard[i][j] == BLANK)
continue;
// (-)横着连成五子
if (j < col - 4)
if (chessboard[i][j] == chessboard[i][j + 1] && chessboard[i][j] ==
chessboard[i][j + 2]
&& chessboard[i][j] == chessboard[i][j + 3] && chessboard[i][j]
== chessboard[i][j + 4])
return chessboard[i][j];
// (|)竖着连成五子