编译器 VScode2022
使用scanf函数的话 注意在第一行写上 #define _CRT_SECURE_NO_WARNINGS 1 !
文件分类
game.h game.c(游戏属性) test.c(调试)
分阶段调试,做好一个小功能及可调试一次。以免一次性写完bug多。
棋盘介绍及特性
3x3大小的棋盘,图中%C的意思是那个位置为字符类型的数据。
此项目中 ROW 与 COL 都被定义为3;而且board都错误的拼写成了broad。
函数统计
- main (逻辑选择实现)
- menu (菜单)
- game (游戏属性)
- intibroad (初始化棋盘)初始化数组为空格
- displaybroad (打印棋盘) 棋盘的基本样式和打印下棋用的棋
各函数功能实现
1.main函数中的界面选择逻辑
int main()
{
int input;
do
{
menu();
printf("请选择:");
scanf("%d",&input);
switch (input)
{
case 1:
printf("三子棋begin\n");
game();
break;
case 0:
printf("over");
break;
default:
printf("---------------------------------------\n");
printf("input mistake ,please select again\n");
printf("---------------------------------------\n");
}
} while (input);
}
2.menu
void menu()
{
printf("****************************************\n");
printf("************ 1.begin *******************\n");
printf("************ 0.exit ****************\n");
printf("****************************************\n");
}
3.game
game函数中调用多个其他函数来实现游戏属性。
4.intibroad
void intibroad(char broad[ROW][COL], int row, int col)
{
int i, j;
for (i = 0; i <row; i++)
{
for (j = 0; j <col; j++)
{
broad[i][j] = ' ';
}
}
}
5.display
void displaybroad(char broad[ROW][COL], int row, int col)
{
int i, j;
for (i = 0; i < row; i++)
{
j = 0;
for (j = 0; j <col; j++)
{
printf(" %c ", broad[i][j]);
if(j<col-1)
printf("|");
}
printf("\n");
if (i < row - 1)
{
j = 0;
for (j = 0; j < col; j++)
{
printf("---");
if (j < col - 1)
printf("|");
}
printf("\n");
}
}
printf("\n");
}
以上代码可以实现n级棋盘的打印,其思想核心在与拆分,及单个打印。
这时候打印如果出现乱码或者?可能是因为数组被没有被完全初始化。