【C语言/C++】三子棋游戏(数组知识扩充)

1、引言

写一个三子棋游戏

2、代码规划

1、创建一个源文件test.c 游戏的测试逻辑
2、创建一个源文件game.c 游戏的实现逻辑
3、创建一个头文件game.h 游戏实现函数的声明

3、构思代码

1、首先我们需要在游戏开始界面实现一个菜单的功能,能够让玩家选择开始游戏或退出游戏
2、开始游戏后我们需要创建并初始化一个棋盘
3、打印出棋盘
4、玩家通过输入行和列的坐标来实现落子
5、判定玩家和电脑的胜负关系(和棋、赢棋、输棋)
6、电脑随机位置落子,但不能落在玩家所下位置
7、判断玩家和电脑的胜负关系

4、代码模块实现

1、游戏界面功能

在这里插入图片描述
首先实现一个简易的菜单在这里插入图片描述

再运用do-while循环来打印出一个菜单,运用switch语句来判断玩家是选择开始游戏或者退出游戏,当玩家选择输入1时,input为真,就会继续do-while循环。输入其他数字时,input为假,就会停止do-while循环。

2、初始化棋盘

创建一个函数InitBoard来初始化棋盘,在头文件game.h中对要创建的函数进行声明
在这里插入图片描述
PS:在头文件中定义ROW和COL,分别为棋盘的行和列,这样当我们未来需要修改棋盘大小的时候就不需要频繁修改行和列的数值,只需要修改ROW和COL定义后面的数值就可以了,这样就不会将代码写的很呆板。

在这里插入图片描述
我们需要将棋盘初始化成空格,方便用来下棋,最后的结果类似这样
在这里插入图片描述

3、打印棋盘

初始化棋盘之后我们需要将棋盘打印出来查看是不是我们需要的效果。然而只经过初始化的棋盘打印出来是一片空白的区域,所以我们要对这些区域进行切割,让他看起来像一个棋盘。

首先我们先创建一个函数DisplayBoard,并在头文件声明这个函数(所有编写的函数都需要在头文件中进行声明,让程序知道有这么一个函数的存在)
在这里插入图片描述

4、玩家下棋逻辑

在头文件中声明player_move函数
1、需要判断落子的合法性,我们需要确保玩家在棋盘内落子,用if-else语句来判断玩家的棋子是否在棋盘内
在这里插入图片描述
2、判断落子是否被占用,所以我们需要判断,若棋盘x-1行y-1列为空格,就可以落子
(这里设置为x-1行和y-1列的原因是二维数组的行和列是从0开始的)

5、简易电脑下棋逻辑

在这里插入图片描述

1、利用时间戳生成的随机数,让电脑下棋(需要记得包含头文件time.h)

在这里插入图片描述

6、判断胜负

创建一个函数is_win
在这里插入图片描述
根据返回的字符来判断游戏是否继续
在这里插入图片描述
因为游戏获胜也有不同的情况
1、同一行的3个棋子相同
在这里插入图片描述
2、同一列的3个棋子相同
在这里插入图片描述
3、对角线上的3个棋子相同
在这里插入图片描述

7、判断游戏是否平局

创建一个函数is_full
判断是否平局的条件很简单,如果棋盘上还有空格,就继续游戏,如果棋盘上已经没有空格,并且没有一方胜出,就可以判断平局
在这里插入图片描述在这里插入图片描述

经过以上这些步骤,我们就实现了三子棋,并实现了不同模块代码的封装。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值