1.游戏运行流程
- 打印菜单选择进行游戏还是退出游戏
- 创建棋盘
- 初始化棋盘
- 打印棋盘
- 玩家下棋(我这里选择用‘x'来表示)
- 判断结果,输赢或者和棋
- 电脑下棋(我这里选择用’o'来表示)
- 判断结果,输赢或者和棋
- 游戏结束
2.具体实现
1.打印菜单选择进行游戏还是退出游戏
int menu()
{
printf("---------------------------\n");
printf("--------1.开始游戏---------\n");
printf("--------0.结束游戏---------\n");
printf("---------------------------\n");
int choice = 0;
printf("请输入你的选择:");
scanf_s("%d", &choice);
return choice;
}
效果图:
2.创建棋盘
我们可以利用一个三行三列二维数组来存放落子的信息
#define MAX_ROW 3
#define MAX_COL 3
char chessBoard[MAX_ROW][MAX_COL] = { 0 };
这里的#define MAX_ROW以及#define MAX_COL是使用了宏定义,可以理解为MAX_ROW和MAX_COL两个字符串在后续的编译中会被替换成‘3’,这样的话在之后的代码阅读中遇到3就可以明确的知晓含义,并且修改的时候也更加便利。
3.初始化棋盘
void init(char chessBoard[MAX_ROW][MAX_COL])
{
for (int row = 0; row < MAX_ROW; row++)
{
for (int col = 0; col < MAX_COL; col++)
{
chessBoard[row][col] = ' ';
}
}
}
将二维数组中的字符全部替换为‘ ’即棋盘上的未落子处。
4.打印棋盘
void print_chessBoard(char chessBoard[MAX_ROW][MAX_COL])
{
printf(" +-0-+-1-+-2-+\n");
for (int row = 0; row < MAX_ROW; row++)
{
printf("%d| %c | %c | %c |\n",row,chessBoard[row][0], //%d是坐标显示