0
点赞
收藏
分享

微信扫一扫

C语言三子棋项目(顺序逻辑-小白学习笔记)

首先要确定游戏的基本框架

简易来说,由进入游戏--->选择菜单--->进入游戏三部分组成

应用在c语言项目中,我们通过功能来对文件进行区分,主函数main()内进入游戏C语言三子棋项目(顺序逻辑-小白学习笔记)_随机数

通过test函数加入我们的菜单,但这里meau()菜单选项我们不希望执行一次,因为如果玩家选择错误,将会导致程序无法进行。

这里通过do while循环最合适,因为至少进行一次选择。同时这里我们将玩家的选择进行限制。

C语言三子棋项目(顺序逻辑-小白学习笔记)_跳出循环_02

C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_03

玩家通过输入1进入我们的游戏game()函数,在game()函数中,我们首先应该做的是创建一个空的棋盘,

C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_04,我们把 棋盘行数Row,列数Col声明在头文件中

C语言三子棋项目(顺序逻辑-小白学习笔记)_随机数_05

,但我们应该知道我们的棋盘内容每一个格子内都是空字符串,所以我们生成一个初始化棋盘的函数,但是初始化棋盘是一项功能,我们每次进入game()函数都要调用它,所以我们把它单独建立在我们的game.c文件中,以便我们接下来增多其它的游戏功能。

C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_06

我们需要在test.c 文件中要调用我们的初始化InitBoard()函数,我们需要在头文件中声明函数,以便调用。

C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_07

之后我们通过循环依次访问棋盘数组中的每一个元素,将其更改为空字符

C语言三子棋项目(顺序逻辑-小白学习笔记)_随机数_08

初始化棋盘数组内容之后,我们要通过控制台将棋盘打印出来,C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_09形成一个井字格, 同样我们先将函数命名出来,C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_10传入实参,打印棋盘与我们的初始化棋盘一样是一种功能,所以同样的方式声明在头文件中。编写在game.c文件中。

C语言三子棋项目(顺序逻辑-小白学习笔记)_随机数_11

我们首先要通过行来依次输出,所以通过循环来进行,第一行的每一个格子可以拆分为 (  字符  )’空格‘%c‘空格’加上一个”|“C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_09看图像最后一次输出时是没有”|“的,所以我们上面通过判断j<col进行了限制。第一行结束后我们进行了换行,通过if<col-1判断最后一列不需要输出,其它与行的输出同理;

接下来棋盘显示完成后进入玩家输入环节,声明功能函数C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_13,同样玩家输入的内容是可能错误的,我们需要进行合法性判断。这里我们通过while循环,因为玩家输入错误后不会跳出循环,会进行二次输入。

C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_14

当然我们如果输入正确后,会改变玩家输入坐标的内容,把空字符改为‘*’,并且跳出循环,函数完成。接着我们将棋盘显示更新一下,C语言三子棋项目(顺序逻辑-小白学习笔记)_随机数_15C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_16

接下来应为电脑下棋(这里随机下棋),我们生成函数C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_17,传入实参,电脑下棋需要随机数,随机数需要无符的时间戳,我们在test函数中已经声明。

C语言三子棋项目(顺序逻辑-小白学习笔记)_随机数_18

C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_19

我们让电脑生成的随机数,并且只有位置为空字符时才可下棋。电脑走完后我们同样让刷新棋盘C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_20

但是我们需要加入一个判断输赢的函数来终止游戏,不然游戏会一直循环。根据逻辑,不管玩家还是电脑下完棋后都要进行判断。并且游戏有四种状态玩家赢(*)电脑赢(#)平局(Q)继续(C),通过ret来接受函数返回值以明确游戏状态,玩家所以这里先生成函数

C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_21

C语言三子棋项目(顺序逻辑-小白学习笔记)_随机数_22

我们来到IsWin的函数,三子棋游戏赢的方式有三种,横着排满,竖着排满,斜着排满。平局的方式有一种

我们先来判断横着排满棋子

C语言三子棋项目(顺序逻辑-小白学习笔记)_跳出循环_23

这里通过循环依次判断每一行的内容是否一致,并且有一种不能为空字符相等。如果一致,我们随意返回这个横向棋盘上的符号就可。

判断列的循环与行的基本一致:

C语言三子棋项目(顺序逻辑-小白学习笔记)_随机数_24

判断斜着的方式

C语言三子棋项目(顺序逻辑-小白学习笔记)_数组_25

这三种赢的状态都会返回一个字符'*'或者'#'。

但是我们还有两种状态平局和继续,我们将棋盘是否满了做成一种函数()C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_26 我们让IsFull()返回一个值,棋盘满了就返回1,没满就返回0;

C语言三子棋项目(顺序逻辑-小白学习笔记)_跳出循环_27

这里我们通过循环依次来看是否有空的字符。

显然还有最后一种状态’c‘继续游戏。我们写在了循环的最下面。

C语言三子棋项目(顺序逻辑-小白学习笔记)_跳出循环_28


前面我们用字符ret接收了游戏状态

C语言三子棋项目(顺序逻辑-小白学习笔记)_随机数_29

当然如果游戏状态返回来已经是平局或者一方赢下的话,我们需要跳出循环进行判断

C语言三子棋项目(顺序逻辑-小白学习笔记)_三子棋_30

同样通过ret返回值进行判断游戏状态。

好了,本篇博客的内容到这里就要结束了,本博主还是小白,写博客记录只是记录学习,望包涵。

举报

相关推荐

【c语言】三子棋

C语言三子棋

三子棋(C 语言)

三子棋C语言

三子棋(C语言)

C语言编写三子棋

0 条评论