1.1三子棋的创建
大家好,我是晓星航,今天为大家带来的知识是三子棋的创建以及运行过程。
下面是为写三子棋代码而先创建好的源文件以及头文件:
他们的作用如上述图可知game.h主要是函数声明,game.c是函数逻辑的实现,test.c主要用来创建函数以及使用函数。
在创建好3个文件后,我们先写主函数:
然后再制作一份菜单,方便使用者进行选择:
菜单制作完毕后便是我们test函数的逻辑实现了:
游戏的基本逻辑----输入1:开始游戏。 输入0:退出游戏。 输入default:输入错误,重新输入。
逻辑写好后我们将需要引用的头文件都放在game.h中,然后直接引用我们自己的头文件:
之后我们引用函数需要的头文件全部放在game.h中即可!
2.1上述基本工作做完后我们便可以开始三子棋棋盘的打印了!
2.1.1首先我们创建一个字符数组接受棋盘的内容:
然后定义两个符号常量用来规定棋盘大小:
将字符数组中全部元素初始化为’ ‘。(’'中为空格)
这里先自己定义一个函数InitBoard,在test.c中创建及运行,在game.h中声明,最后在game.c中实现。
声明:
实现:
以上操作完成之后我们将棋盘初始化好了。
2.1.2接下来我们完成棋盘的打印,打印棋盘我们自己创建DisplayBoard函数,过程和上述相同,实现过程如下:
用循环的方法来写的好处是当行和列改变时棋盘也会自己跟着改变不需要我们重新编写代码。
坚持住就快完成了!😆
3.1玩家下棋的实现
棋盘创建以及初始化好后我们就要开始写玩家下棋的代码了。
玩家下棋我们创建player_move();函数,实现过程如下:
我们先要输入坐标然后判断坐标合法性以及该坐标又没有被占用,如果合法且没被占用我们即用*填入该位置。
玩家下棋后便是电脑下棋了。
4.1电脑下棋的实现
电脑下棋我们创建函数:computer_move();其实现过程如下:
注:电脑下棋需要生成随机数rand(); 而rand();函数的引用可以按如下步骤实现:
srand((unsigned int(time)NULL)); ---- 引头文件: #include #include
上述一写二引用完成后,再用随机数只需要写成: rand();即可
电脑下棋我们填入’#’
电脑和玩家都下完棋后我们就要开始考虑三子棋输赢的逻辑了。
5.1三子棋输赢的判断
5.1.1在这里我们这样规定:
1‘玩家赢----‘*’
2’电脑赢----‘#’
3‘平局-------‘Q’
4’继续-------‘C’
用is_win函数来判断输赢,is_win函数再test.c中实现逻辑为:
注意:判断输赢是没下一步棋判断一次,不论是玩家走还是电脑走都个要判断一次,不要漏写!(作者一开始就不小心漏写了,哈哈哈😂)
is_win的内部实现逻辑为:
它主要判断了三子棋 横竖斜 三种情况下有没有全部相同的符号,如果有通过返回一个字符来判断是电脑赢还是玩家赢。*----玩家赢。#----电脑赢。
若三种情况下没有相同元素且棋盘上位置全部占满则为平局。
5.1.2在上面函数中我们还用到了判断函数三子棋是否全部填满的is_full函数,他的实现逻辑如下:
is_full函数的实现逻辑很简单,它将二维数组的每个元素和 (空格符号)进行比较,如果每个元素都不为 (空格符号),那么棋盘就全部下满了,此时返回1为真即三子棋全部下满还没有分出胜负,返回’Q’----平局。
6.1运行三子棋游戏
此时我们的三子棋代码便大功告成,我们可以开始运行他了!!!😉
一不小心就让电脑赢了呢。
感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘