C++实现三子棋
文章目录
游戏架构实现
1.出现开始菜单选择是否进行游戏
1.1.选择是否进行游戏
2.显示棋盘
2.1.遍历二维数组中每一个元素,打印棋盘
3.玩家选择坐标进行下棋
3.1.对玩家的坐标进行判断
3.2.判断该坐标是否存在棋子
4.电脑进行随机坐标下棋
4.1.对随机产生的坐标进行判断直至满足条件
5.每次落子后进行判断输赢
6.打印当前棋盘
二、代码介绍
1.头文件
###1.1主要用于函数声明,以及对棋盘的大小进行初始化
头文件的作用:
1.方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明;
2. 使函数的作用域从函数声明的位置开始,而不是函数定义的位置(实践总结)
3 .提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)。
代码如下():
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define ROW 3
#define COL 3
//初始化棋盘
void InitBoard(char board[ROW][COL], int row, int col);
//打印棋盘
void DisplayBoard(char board[ROW][COL], int row, int col);
//玩家下棋
void PlayerMove(char board[ROW][COL], int row, int col);
//电脑下棋
void ComputerMove(char board[ROW][COL], int row, int col);
//检查输赢
char CheckWin(char board[ROW][COL], int row, int col);
2.game函数文件
对头文件中的声明过的函数进行编写,完成函数功能
这样做的好处就是,对于未来想更改代码时,只需要对该文件中的函数块进行更改,不需要耗费大量的时间在主函数中更改。
代码如下(示例):
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
//实现初始化棋盘函数,将二维数组中的每一个元素先初始化为空格
void InitBoard(char board[ROW][COL], int row, int col)
{
//遍历数组中的每一个元素
int i = 0;
int j = 0;
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
board[i][j] = ' ';
}
}
}
//棋盘显示函数
void DisplayBoard(char board[ROW][COL], int row, int col)
{
//这种写法不便于扩展,当打印多行多列时不能满足要求
//int i = 0;
//for (i = 0; i < row; i++)
//{
// //打印数据
//限制了只能出现三列棋盘(不好,代码的扩展性不够)
// printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][2]);
// //打印分割的行
// if (i < row - 1)
// printf("---|---|---\n");
//}
//打印数据
//下面使用循环嵌套,可以避免上述出现不能打印多行多列的情况
int i = 0;
for (i = 0