c语言初级 --1.三子棋

首次创作,多多理解(把这里作为一个存放笔记的地方)

准备阶段:

在编写一个较为复杂的代码时,可以通过建立多个源文件来存放不同类型的代码。如下图:

创建出game1.h为题的头文件:用来提供在main函数中运行所用到的函数。在该文件中包含整个程序所需要用到的头文件,这样就不需要在源文件中重复了,只需要将另外两份源文件包含在整个头文件中。

创建出game1.c为题的源文件:用来提供在game1.h中运行所提到函数的具体代码。

创建出test.c为题的源文件:是main函数所在的文件夹,这里包含出整个函数的大体框架。

完成了基本的文件创建以后就可以开始书写代码了.那么首先应该先了解整个游戏是怎样运行的,即我们到底需要做出来的是一个什么样的结果;

一:下面简要对整个main函数做一个讲述:

58:目的是为了在电脑落子时可以有随机数使用,后面在电脑落子中会用到

63:这是一个菜单函数,目的是为了把菜单打印出来,下图是具体实现过程(就是一个打印过程而已):

61-78:在输入1时,要进入游戏,在输入0时,我们退出游戏,在输入错误时,我们需要重新输入。这里可以使用if,当然也可以使用switch case。不管是输入1还是0,玩了游戏或者不想玩以后我们都会退出到菜单的界面,不想继续循环了,那么需要break帮我们退出循环,但仅当输入为0时,才是真正意义上的退出,所以在设置while的条件时,用input来作为条件,在1和非0时,都会回到选择的界面,重新输入值;

二:下面简要对整个游戏过程做一个讲述:首先会进入到主页,可以选择进入游戏或者退出;进入游戏以后,会有一个空棋盘出现,需要在键盘上输入坐标来选择所落子的位置,并显示出落子以后的位置;接着是电脑落子,这里我们采用的是电脑的随机落子(可以优化出更加强大的电脑落子),依然需要显示出电脑落子的位置;一直循环,满足我们循环停止条件(游戏结束)的条件以后停止。

上述过程对应出了整个函数的框架:

整体的逻辑先来叙述一遍:首先有一个棋盘出现,这里的棋盘其实就是数组组成的,包含一个三阶的数组以及用来分隔这个数组的横画线以及下划线。玩家开始下棋,并展示出结果,如果发现不是字符c(定义为继续)即不继续,那么就直接退出;电脑开始下棋,并展示出结果,如果发现不是字符c(定义为继续)即不继续,那么就直接退出;开始判断ans的符号结果,* # p都有各自对应的结果

17-18:定义的ROW为行数,COL为列数

19:棋盘的初始化函数,具体实现如下:

利用两个for循环的嵌套,可以把该数组内的全部内容变为空格符号(即可以方便之后对数组的判定,因为这里已经有一个确切的值了;也可以使空棋盘看起来更加美观)

20:棋盘的展示函数,具体实现如下:

下面为要打印出的效果

这里可以这样理解:行为1时,打印出上图中前两行;行为2时,打印出上图中3.4行;行为3时,打印出上图中最后一行;

24:玩家下棋函数,具体如下:

26:游戏结束的判定函数,具体如下:

这里看着很复杂,其实只是三种不同情况的判定:行全为同一种,列全为同一种,对角线全为同一符号;判定是很简单的;这里在把isping函数(平局函数)具体展示出来

这个函数的目的是判断游戏是继续还是平局,具体分析:在数组中一直循环,判定其中每一位元素是否为空格,只要有一个是空格就会返回1,一个空格都没有返回0;返回0回到26的函数中,会输出平局;返回1回到26的函数中,会输出游戏继续,因为还有数组是没有被占用的。

31:玩家下棋函数,具体如下:

这里x,y虽然是随机数,但是通过取模以后必然在0-2的范围内;这里的电脑与玩家不同,只是需要显示出任意落子即可,所以在成功落子以后便结束循环,一直取到成功为止。

以上包含了整个三子棋的过程及思路,如果你看到了这里,可以评论666,鼓励下吗hh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值