C语言中五子棋相关问题
为什么五子棋的棋盘有实现绘制棋盘和打印棋盘选择模式后却无法出现?到哪一方下棋时也是无法显示?

请问需要怎么解决,谢谢!
#include<stdlib.h>
#include<stdio.h>
#include<Windows.h>
#include<time.h>
#define 白色 2
#define 黑色 1
#define 空白 0
#define BOARD_SIZE 15 // 棋盘大小
void draw_menu(void);
void draw_chessboard(int row, int col, int chessboard[][BOARD_SIZE]);
void print_chessboard(char chessboard[][BOARD_SIZE]);
void draw_chess(int type, char* tableline);
int is_win(int chessboard[][BOARD_SIZE], int row, int col);
int is_full(int chessboard[][BOARD_SIZE], int row, int col);
void humanVsHuman();
void humanVsAI();
void end_game();
int mune2();
void save_game(char chessboard[][BOARD_SIZE]);
//绘制主菜单
void draw_menu(void)
{
printf("******************************\n");
printf("******* 欢迎使用五子棋 *******\n");
printf("*** 请选择对战方式 ***\n");
printf("* 1.人-人对战 *\n");
printf("* 2.人-机对战(随机算法) *\n");
printf("* 3.退出 *\n");
printf("******************************\n");
printf("请选择:");
}
int main()
{
int choice;
draw_menu();
while (1)
{
scanf("%d", &choice);
switch (choice)
{
case 1:
humanVsHuman();
break;
case 2:
humanVsAI();
break;
case 3:
exit(0);
break;
default:
printf("输入错误,请重新选择\n");
}
}
return 0;
}
//绘制棋盘
void draw_chessboard(int row, int col, int chessboard[][BOARD_SIZE])
{
int i, j;
for (i = 0; i < row; i++)
{
if (i == 0)
{
for (j = 0; j < 14; j++)
{
if (j == 0) printf("┌");
else if (j == 14) printf("┐");
else printf("┬");
}
printf("\n");
}
else if (i == 14)
{
for (j = 0; j < 14; j++)
{
if (j == 0) printf("└");
else if (j == 14) printf("┘ ");
else printf("┴ ");
}
printf("\n");
}
else
{
for (j = 0; j < 14; j++)
{
if (j == 0) printf("├ ");
else if (j == 14) printf("┤ ");
else printf("┼ ");
}
printf("\n");
}
}
}
// 打印当前棋盘
void print_chessboard(char chessboard[][BOARD_SIZE])
{
printf("\n ");
for (int i = 0; i < BOARD_SIZE; i++)
{
printf("%c ", 'A' + i);
}
printf("\n");
for (int i = 0; i < BOARD_SIZE; i++)
{
printf("%2d ", i + 1);
for (int j = 0; j < BOARD_SIZE; j++)
{
printf("%c ", chessboard[i][j]);
}
printf("%2d\n", i + 1);
}
printf(" ");
for (int i = 0; i < BOARD_SIZE; i++)
{
printf("%c ", 'A' + i);
}
printf("\n\n");
}
//定义棋子
void draw_chess(int type, char* tableline)
{
if (type == 白色)
printf("●");
if (type == 黑色)
printf("○");
if (type == 空白)
printf("%s", tableline);
}
//判断输赢的条件
int is_win(int chessboard[][BOARD_SIZE], int row, int col)
{
int i, j;
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
if (chessboard[i][j] == 空白)
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];
// (|)竖着连成五子
if (i < row - 4)
if (chessboard[i][j] == chessboard[i + 1][j] && chessboard[i][j] ==
chessboard[i + 2][j]
&& chessboard[i][j] == chessboard[i + 3][j] && chessboard[i][j]
== chessboard[i + 4][j])
return chessboard[i][j];
// (\)左斜连成五子
if (i < row - 4 && j < col - 4)
if (chessboard[i][j] == chessboard[i + 1][j + 1] && chessboard[i][j] == chessboard[i + 2][j] && chessboard[i][j] ==
chessboard[i + 3][j + 3] && chessboard[i][j] == chessboard[i + 4][j + 4])
return chessboard[i][j];
// (/)右斜连成五子
if (i < row - 4 && j > 4)
if (chessboard[i][j] == chessboard[i + 1][j - 1] && chessboard[i][j] ==
chessboard[i + 2][j - 2]
&& chessboard[i][j] == chessboard[i + 3][j - 3] && chessboard[i]
[j] == chessboard[i + 4][j - 4])
return chessboard[i][j];
}
}
return 空白;
}
//判断是否和局
int is_full(int chessboard[][BOARD_SIZE], int row, int col)
{
int ret = 1;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (chessboard[i][j] == 空白) {
ret = 0;
break;
}
}
}
return ret;
}
//人人对战
void humanVsHuman()
{
printf("人人对战模式!你能战胜对方吗?\n");
void draw_chessboard(int row, int col, int chessboard[][BOARD_SIZE]);
void print_chessboard(char chessboard[][BOARD_SIZE]);
int chessboard[BOARD_SIZE][BOARD_SIZE] = { 空白 };
int winner = 0, turn = 1;
while (winner == 0)
{
int X, Y;
printf("当前是%c方下棋,请输入行号和列号:", turn % 2 == 0 ? 黑色 : 白色);
scanf("%d%d", &X, &Y);
X--; Y--;
if (chessboard[X][Y] == 空白)
{
chessboard[X][Y] = turn % 2 == 0 ? 黑色 : 白色;
if (is_win(chessboard, BOARD_SIZE, BOARD_SIZE))
{
void print_chessboard(char chessboard[][BOARD_SIZE]);
printf("恭喜%c方获得胜利!\n", winner == 1 ? 黑色 : 白色);
winner = 1;
break;
}
else
{
void print_chessboard(char chessboard[][BOARD_SIZE]);
turn++;
}
}
}
}
//人机对战
void humanVsAI()
{
printf("人机对绝模式!您是黑子,您先下。\n");
void draw_chessboard(int row, int col, int chessboard[][BOARD_SIZE]);
void print_chessboard(char chessboard[][BOARD_SIZE]);
int chessboard[BOARD_SIZE][BOARD_SIZE] = { 空白 };
int winner=0, turn=1;
while (winner == 0)
{
int X, Y, x=16, y=16;
if (turn % 2 == 0)
{
printf("当前是%c方下棋,请输入行号和列号:", 空白);
scanf("%d%d", &X, &Y);
X--; Y--;
if (chessboard[X][Y] != 空白)
{
printf("该位置已有棋子,请重新输入\n");
continue;
if (is_win(chessboard, BOARD_SIZE, BOARD_SIZE))
{
void print_chessboard(char chessboard[][BOARD_SIZE]);
printf("恭喜您获得胜利!\n");
winner = 1;
break;
}
else
{
void print_chessboard(char chessboard[][BOARD_SIZE]);
turn++;
}
}
}
else
{
printf("电脑走:>\n");
X = rand() % x;
Y = rand() % y;
if (chessboard[X][Y] == 空白)
{
printf("该位置已有棋子,请重新输入\n");
continue;
if (is_win(chessboard, BOARD_SIZE, BOARD_SIZE))
{
void print_chessboard(char chessboard[][BOARD_SIZE]);
printf("真遗憾您失败了。\n");
winner = 1;
break;
}
else
{
void print_chessboard(char chessboard[][BOARD_SIZE]);
turn++;
}
}
}
}
}
// 保存对局
void save_game(char chessboard[][BOARD_SIZE])
{
char filename[40];
printf("请输入要保存的文件名:");
scanf("%s", filename);
FILE* fp;
fp = fopen(filename, "w");
if (fp == NULL)
{
printf("无法创建文件\n");
return;
}
for (int i = 0; i < BOARD_SIZE; i++)
{
for (int j = 0; j < BOARD_SIZE; j++)
{
fputc(chessboard[i][j], fp);
}
fputc('\n', fp);
}
fclose(fp);
printf("保存成功\n");
}
// 结束对局
void end_game()
{
printf("游戏结束\n");
exit(0);
}
int mune2()
{
char chessboard[BOARD_SIZE][BOARD_SIZE]; // 棋盘
int choice;
do {
// 显示菜单
printf("1. 保存对局\n2. 结束对局\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice)
{
case 1:
save_game(chessboard);
break;
case 2:
end_game();
break;
default:
printf("无效选择,请重新选择\n");
break;
}
} while (choice != 2);
return 0;
}