上节我们将要完成贪吃蛇游戏所需的前置知识都学完了,那么这节我们就开始动手写代码了
1. 程序规划
首先我们应该规划好我们的代码文件,设置3个文件:snack.h 用来声明游戏中实现各种功能的函数,snack.c 用来实现函数,test.c 用来测试和运行这个游戏
然后我们将游戏的大概流程在test.c文件中写出来,因为我们会用到宽字符,所以要记得适配本地中文环境
2. 游戏数据结构设计
2.1 蛇身数据结构(链表)
我们设计用链表来表示蛇身,链表的每个节点中需要存这节蛇身的坐标 x、y 和下一节点的地址,然后我们给蛇身节点结构体类型改个好写一点的名字
链表的基础知识:数据结构·单链表-CSDN博客
2.2 维护整个游戏的结构体
我们还要创建一个结构体,用来存放当前游戏的种种状态
3. 游戏开始前的初始化
游戏的开始前初始化都在GameStart()函数中实现,那么我们着手开始写这个函数。
首先,我们要先创建维护贪吃蛇游戏的结构体,将它的信息传到GameStart()中去,在snack.h中声明这函数,然后再在snack.c中实现它
我们把这个函数种封装的功能先都展示出来,之后就不重复展示了
3.1 控制台信息设置及光标隐藏
控制台为了美观我们设置成100列30行的,名字就叫做贪吃蛇
运行以下发现控制台设置好了,并且光标也很好的隐藏了起来
3.2 打印欢迎信息
WelcomeToGame()函数内部的大部分东西我们上节其实已经写过了,下面就展示一下
3.3 打印地图
地图大小我们上节已经说过了,要设计一个27行58列的棋盘,然后我们用一个宏把每块墙写出来,方便写打印语句
在打印墙的时候上边界和下边界挨着打印就行,左边界和右边界的时候要在每次打印之前把光标都定一下位
展示打印地图的代码:
3.4 初始化蛇
蛇身我们采用链表的结构进行管理。最开始,我们展示5个蛇身,初始的蛇尾巴从(24,5)的位置开始,向右5节之后是蛇头,这里我们采用头插的方式依次创建节点并加入蛇身中。
同时定义蛇尾初始位置的宏和蛇身形状的宏