项目实践---贪吃蛇游戏的实现

27 篇文章 0 订阅
20 篇文章 0 订阅
  • 上一章,我们已经分析了贪吃蛇的具体内容,包括它是如何实现的,怎样完成这个项目的,其中就提到了 贪吃蛇有三个代码:一个是测试代码,一个是头文件代码,还有一个是主函数代码。
  • 那么今天我们就来讲一讲测试代码,和一部分的头文件代码

测试代码:

  • 对于测试代码(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;
    

    这里的数字,其实是可以随意定义的。我的只是仅供参考罢了。

  • 对于测试代码和一部分的头文件代码就讲到这里,后续就是主要的来实现主函数的代码了。

                 在讲完贪吃蛇游戏代码后,我会再写一章,把所有的代码整理一遍,这样你们看的时候就会理解的更容易些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值