c语言实现三子棋

先考虑整体结构,因为要考虑的功能较多,所以我们使用3个文件(main函数实现.c文件,功能实现.c文件,初始化.h头文件)来完成代码的协作;

对于一个游戏首先要打印选项并让用户选择是否游戏或者退出;

对于玩家的选择我们应该先输入后判断,并且需要循环直到玩家选择退出,这里可以用do-while语句实现,玩家输入后,根据输入值执行不同的结果可以使用switch,那么case 1下面就可以放我们的游戏主体了

 玩家选择1后我们就需要打印棋盘让玩家看见

考虑到三子棋游戏的特性,三行三列构成九个落子点,因此我们可以构建一个二维数组board【ROW】【COL】来表示棋盘,为了使棋盘大小更有适用性,我们在.h头文件中创建两个宏来表示棋盘行和列的大小;#define ROW 3          #define COL 3

在玩家和电脑未落子时应该让棋盘显示为空,在这里可以把数组内的值改为空格;利用for循环嵌套实现二维数组的初始化

初始化完就要打印棋盘的显示,这里用'---'和'|'来表示,循环打印时要注意每一行只打印COL-1个'|';

接下来就需要获取玩家和电脑的落子了,对于玩家和电脑落子,我们应该考虑玩家对坐标的认识,玩家实际输入的坐标行和列,在填入数组时都需要-1;然后就是判断该坐标是否为空,能否落点;

玩家下完就需要电脑下,这里电脑的落子的行、列下标我们用随机数rand%ROW,rand%COL来表示,只要该下标不为空格那么就填入值并结束

落子之后就需要判断一下输赢,如果没赢,那么继续循环下棋,当棋盘都不为空格时,就和棋了;赢棋盘有三种情况,行、列、斜边都为相同值且不为空格,当相同时,我们直接返回其中的一个值做判断;和棋和继续下棋的情况也都返回一个值做判断;

这里我们把和棋的情况写一下,也就是当数组board内都不为空格时,for循环嵌套遍历一下就可以了,当赢棋、和棋的情况都没有出现时,我们返回一个值'Z'做是否继续下棋的判断。

 

 接下来,我们就需要在main函数实现.c文件里去反复调用功能函数实现程序了,这里使用game()函数来实现,创建一个ret变量来保存我们输赢判断的返回结果,玩家和电脑每次落子都需要判断一下输赢,所以落子→打印棋盘→判断输赢,按照这样的顺序调用函数,如果不符合条件'Z',就跳出循环做判断本局结果

 

 最后把这个实现功能的game()函数放在首次switch对应选择的下面就结束了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值