C语言制作三子棋(详细操作),黑白小游戏,嘿嘿

首先,咱先说一下思想,编程的核心就是思想,可不是照抄别人的源码。

test.c 存放 测试游戏的逻辑代码

game.h 存放关于游戏相关的函数声明以及头文件的包括

game.c 存放游戏相关函数的实现代码

分成三块,条理清晰。我知道,肯定有人说,放在一个文件里也行。是的,不过那太拉了。

开整开整

一,玩游戏先搞一个菜单,选择1是玩游戏,0是退出游戏,要是误按其他数字是重新选择,直到你选择1或者0。这是菜单的样子。

先说菜单的事,

菜单的代码,简单的一笔,这是函数,放在game.c里面了,函数声明放在game.h里面。

然后在test.c.上面包含“game.h"文件就行了,直接就是函数声明包含进主函数去了,看着就简洁明了,(兄弟们,真别怕麻烦,等你们这样做好就知道,多么顺眼了,一股脑全放在一起,乱的一笔)。

为什么这里game.c 也包含game.h文件了,因为要用到printf就得有stdio.h文件,我把它放在 game.h里面,这样直接包含进去了,懂不懂,大包含包括了小包含。高中数学了。肯定有人问直接引用stdio.h不行吗。回答,可以的,但是后来还是必须用到game.h。索性这样最节省优化。

      现在该看看,主函数怎么编写了,这是test.c文件哦。选择错误时,应该接着可以选择,那就首选循环语句,因为一开始就要进行一次,那do—while语句是必须要来的了。

进去循环了,就得选择分支了,其实那几种分支语句都可以,但是switch最方便。

 门面搞清楚了,接下来看看实际运行情况,完全符合预期的要求,先不管棋盘,棋盘的事情接下来会说的。                    起码现在的外壳,是实现的没毛病了。。

 

二,开始编写游戏的内容,game函数。选择菜单1,进入game函数,玩游戏,game函数里面包括是:

1,初始化棋盘为空格,打印出来也都是空格。

2,设置循环,进行下棋玩游戏操作

3,玩家下棋,接着判断输赢,赢或者输或者平局,直接跳出循环,game over。

4,电脑下棋,接着判断输赢,赢或者输或者平局,直接跳出循环,game over。

5,就是胜负不分,接着下棋操作,进入循环,重复上面第三步骤。

所实现的代码如下:

这是game大函数,其中需要调用各个小函数,下面会依次解释,先看逻辑就行:

 这是初始化棋盘的函数,InitBoard函数:

 

这是打印棋盘的函数,DisplayBoard函数。每次打印,都会记录上一步所走的步骤,第一步肯定是空棋盘,往后每走一步,打印出来的就是每一步的步骤。实时记录的。逻辑如下图:

 

这是玩家下棋函数,PlayerMove函数。1,得先设置输入坐标。2,判断坐标的合法性,万一出格了,肯定不行。3,还得判断空格有没有被占用。逻辑如下图:

接下来, 这是电脑下棋函数,ComputerMove函数。跟玩家下棋的区别在于,电脑设置的是随机数下棋。

(肯定有老哥说,该设置算法,让电脑想着赢你。。。有一说一,难度很大,不是谁都是阿尔法🐕。。。。)

设置随机数下棋,很不错了。首先确定随机数范围,0到3,用%3,这种取余之后就是0—3了。

然后设置随机数,一定要在主函数调用srand函数,设置随机数的种子。不设置种子,随机数只会随机一次,我们要很多次随机数,老哥应该懂这个吧。再用time函数,返回时间戳,这样每次时间不一样,种子不一样,随机数也不一样。代码如下图:

 

主函数这里,一定要调用srand函数, 

 接下来是判断输赢了,咱们设置4个不同的返回值,用来判断输赢,

只需要判断横着的三行,竖着的三列,以及两条对角线是否为一个字符,就是赢,基本写一个就行,代码都是类似的,改一下数组坐标即可。

而最重要的判断是不是没有人赢,平局情况了,首先看棋盘是不是满了,满了并且没有人赢,就是平局。(不满,那就接着下)代码如下图:

 判断棋盘是不是满了的函数:

 

基本game函数的逻辑就是上图情况了,大函数里面调用小函数,小函数还得调用小小函数。。虽然多,但是你们敲一遍,就知道条理清晰。

接下来,看,头文件的包含了。宏定义棋盘的大小,虽然是三子棋,万一想玩五子棋呢,棋盘搞大一点,改数字太麻烦,直接宏定义棋盘的行列,最完美。

然后就是,各种库函数的包含了,

#include <stdio.h>
#include <stdlib.h>
#include <time.h>经常用的几个库函数了。

然后就是各种函数调用的声明,这是给主函数里面调用的声明,

因为主函数文件,包含了game.h文件,就全部声明了。

 

接下来的主函数,就是最终的主函数了,很简单,其中最难的是game函数,上面讲解的game函数希望老哥们,看的明白。

 

最后就是测试,玩耍了:

这是玩家赢的情况:

 

 这是平局的情况:

 

这是电脑赢的情况:

 

兄弟们,初学者真应该好好敲一敲,悟一悟,这里面蕴含了好多语法知识,游戏好不好玩不重要,语法结构很重要。。。。。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值