实现三子棋的步骤
实现三子棋总共创建了三个文件,两个“.C”文件来实现具体功能,一个头文件来声明函数
1.游戏的选择界面
可以用函数自己创建一个自己的游戏菜单
通过switch语句来进行选择玩游戏还是退出游戏;在main函数所在的文件中实现
这是代码
int main()
{
srand((unsigned int)time(NULL));
int input = 0;
do
{
menu();
printf("请输入:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏");
break;
default:
printf("输入错误,请重新输入");
break;
}
} while (input);
}
可以看到里面有一个game函数,这个函数就是这个游戏的具体实现部分
这是代码
void game()
{
int ret = 0;
//初始化棋盘为空格
char board[ROW][COL] = { 0 };
InitBoard(board, ROW, COL);
//打印棋盘
DisPlayBoard(board, ROW, COL);
//下棋
while (1)
{
//玩家下棋
PlayerMove(board, ROW, COL);
DisPlayBoard(board, ROW, COL);
ret = IsWin(board, ROW, COL);
if (ret != 'C')
break;
//电脑下棋
ComputerPlay(board, ROW, COL);
DisPlayBoard(board, ROW, COL);
ret = IsWin(board, ROW, COL);
if (ret != 'C')
break;
}
if (ret == '*')
printf("玩家赢\n");
else if (ret == '#')
printf("电脑赢\n");
else
printf("平局\n");
}
我们由代码来一步步思考游戏的思路
要玩这个游戏首先要有一个棋盘,所以我们初始化一个棋盘
2.初始化棋盘
我们先让棋盘初始化为空格,定义一个InitBoard(board, ROW, COL)函数,来初始化棋盘。在创建的game.c中实现
具体系代码如下
//初始化棋盘
void InitBoard(char board[ROW][COL], int row, int col)
{
int i = 0;
for (i = 0; i < row; i++)
{
int j = 0;
for(j = 0; j < col; j++)
{
board[i][j] = ' ';
}
}
}
通过两个for循环来实现一个二维数组的初始化
3.打印棋盘
棋盘初始化完成我们打印棋盘,一是看一下棋盘是否正确,二是为玩家之后下棋提供参考
所以定义一个函数DisPlayBoard(board, ROW, COL);在创建的game.c中实现
代码如下
//打印棋盘
void DisPlayBoard(char board[ROW][COL], int row, int col)
{
int i = 0;
for (i = 0; i < row; i++)
{
int j = 0;
for (j = 0; j < col; j++)
{
printf(" %c ", board[i][j]);
if (j < col - 1)
printf("|");
}
printf("\n");
if (i < row - 1)
{
int j = 0;
for (j = 0; j < col; j++)
{
printf("---");
if (j < col - 1)
printf("|");
}
}
printf("\n");
}
}
两个for循环的作用
外围for循环控制行的打印,内部for循环控制列的打印
第二个for循环内部