- 上一章,我们已经分析了贪吃蛇的具体内容,包括它是如何实现的,怎样完成这个项目的,其中就提到了 贪吃蛇有三个代码:一个是测试代码,一个是头文件代码,还有一个是主函数代码。
- 那么今天我们就来讲一讲测试代码,和一部分的头文件代码
测试代码:
- 对于测试代码(test.c)它其中包含了
初始化游戏
1.打印环境界面
2.功能介绍
3.绘制地图
4.创建蛇
5.创建食物
6.设置游戏的相关信息
- 这7个信息,是在主函数中必不可少的内容,对于C语言,就不得不提主函数代码,无论是什么样的C语言代码,它都会有主函数,贪吃蛇也不例外,它的主函数代码为:
int main()
{
//设置合适配本地环境
setlocale(LC_ALL, "");
srand((unsigned int)time(NULL));
test();
return 0;
}
test()是为了声明函数用的,那么就知道了,test()就是它的上一部分,
- 则test()的代码为:
#include<locale.h> #include"snake.h" //完成的是游戏的测试逻辑 void test() { int ch = 0; do { system("cls"); //建立贪吃蛇 Snake snake = { 0 }; //初始化游戏 //1.打印环境界面 //2.功能介绍 //3.绘制地图 //4.创建蛇 //5.创建食物 //6.设置游戏的相关信息 GameStart(&snake); //运行游戏 GameRun(&snake); //结束游戏 - 善后工作 GameEnd(&snake); SetPos(20, 15); printf("再来一局吗?(Y/N): "); ch = getchar(); while (getchar() != '\n'); } while(ch == 'Y' || ch == 'y'); SetPos(0, 27); }
这个就是它的测试代码。我在上边都有标注的,请大家自行观看。
一部分的头文件代码:
-
头文件是相当重要的一部分,如果没有它,所有的代码都无法解析外部命令。它就相当于一个监督者,没有它的命令都是无法执行的。
-
这里就需要结构体,枚举,来定义它的类型。(上一章讲的蛇身就是要通过链表来完场的),则代码为:
#include<stdio.h> #include<windows.h> #include<stdbool.h> #include<stdlib.h> #include<time.h> //类型大的声明 //蛇的方向 用枚举来定义 enum DIRECTION { UP = 1, DOWN, LEFT, RIGHT }; //蛇的状态 //正常,撞墙,撞到自己,正常退出 //也是用枚举来定义 enum GAME_STATUS { OK, //正常 KILL_BY_WALL, //撞墙 KILL_BY_SELF, //撞到自己 END_NORMAL //正常退出 }; //蛇身的节点类型 typedef struct SnakeNode { //坐标 int x; int y; //指向下一个节点的指针 struct SnakeNode* next; }SnakeNode, * pSnakeNode; //贪吃蛇 typedef struct Snake { pSnakeNode _pSnake;//指向蛇头的指针 pSnakeNode _pFood;//指向食物节点的指针 enum DIRECTION _dir;//蛇的方向 enum GAME_STATUS _status;//游戏的状态 int _food_weight;//一个食物的分数 int _score; //总成绩 int _sleep_time; //休息的时间,时间越短,速度越快,时间越长,速度越慢 }Snake, *pSnake;
这里的数字,其实是可以随意定义的。我的只是仅供参考罢了。
-
对于测试代码和一部分的头文件代码就讲到这里,后续就是主要的来实现主函数的代码了。
在讲完贪吃蛇游戏代码后,我会再写一章,把所有的代码整理一遍,这样你们看的时候就会理解的更容易些。