今天博主教你一步步用c语言实现三子棋游戏,可以根据自己的需求跳转至对应段落(代码放在Gitee上,结尾有链接)。
目录
一、游戏介绍
三子棋的棋盘有九个格子,分成三行,每行有三个格子,如一个井字,所以三子棋也被称为井字棋。玩家双方可以轮流在棋盘上落子,当一方的棋子连成一条直线,则该玩家获胜,游戏结束。
![](https://i-blog.csdnimg.cn/blog_migrate/b84e553938eff6d921772361cca365f8.png)
二、代码核心知识
在代码设计中,我们采用二维数组来存储棋盘上的每个格子上的内容,通过判断数组内的信息来判断游戏进程。
三、游戏实现
(一)文件创建与分类
创建一个新项目后创建三个文件:
1.头文件Game.h。该文件用来存放一些所需要的头文件和函数的声明。
2.源文件game.c。该文件用来定义游戏所需要的函数。
3.源文件main.c。该文件用来写主函数,即游戏实现的代码。
(这里的文件名不重要,重要的是每个文件所分配的内容。将代码分工明确可以让代码更加清晰,易于理解与检查。)
之后将主要的游戏流程写出来
![](https://i-blog.csdnimg.cn/blog_migrate/6061f9c68ee7f345de4270fe794a2dcd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3ac3d87fd19a7cfa105b0a40669df9b8.png)
后面的函数设计和声明也如图二这样安排,之后便不在赘述。
这里用input作为循环控制语句,输入0则为假,退出循环;输入1则进入游戏,输入其他数则会再次进入菜单,这么处理更加简洁。
(二)三子棋的实现
1.初始化棋盘的信息并打印棋盘。
我们定义一个三行三列的二维数组,将字符’ ‘(空格)作为初始化的值。之后再定义一个函数,用来打印棋盘信息。
空白棋盘打印出来就是这样
2.玩家下棋
这里玩家下棋是指玩家输入要落子的坐标,而程序通过玩家输入的坐标将数组中对应的数据改成字符‘ * ’并再次将棋盘打印出来。
在这一步中,有两个值得注意的点:
第一是棋盘的坐标与数组下标的对应。在程序里,数组每一行的开头下标为0,但现实中我们是从1开始数的,所以我们要注意输入坐标与数组下标之间的转化。
第二是坐标合法性。我们的棋盘的大小是三行三列,所以输入的横纵坐标的大小都为1~3,同时还要注意输入的坐标上有没有下过子。
综合以上,我们可以这么写:
3.电脑下棋
电脑下棋就比较简单了,用rand()函数模拟电脑下棋的随机性,再控制一下坐标范围就行。
4.对局情况判断
每下完一步,我们都要判断对局情况。对局一共有四种情况:玩家胜利、电脑胜利、平局、未结束。
这些语句是用来判断是否获胜的:前两个循环分别判断每行每列,后面两个判断对角线。这里我们用char类型作为返回类型,返回获胜方的棋子,这样就可以通过返回的字符判断哪一方获胜。
而还有平局和未结束两种情况。平局就是双方都没获胜且棋盘上没有格子可以下,而获胜的情况我们已经完成了,那接下来就判断棋盘有没有填满,可以写一个函数来判断:
而如果前面三种情况都没有发生,那就是游戏继续。此时我们就可以完整地把判断对局情况的函数写完。
这里的Q表示平局,C表示继续。
这些都完成后我们已经可以将这个游戏部分完整地写完了。
最后放一下成果(部分)
四、结尾
三子棋游戏重点便在于二维数组的使用,只要掌握二维数组,再一步步分析游戏的进行流程,写好一个三子棋挺容易的。
代码放在我的gitee里,点下面链接,找到文件TicTacToe就可以啦。