版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
贪吃蛇——C语言实现贪吃蛇是非常经典的一款游戏,本次我们模拟在控制台实现贪吃蛇游戏,也就是实现贪吃蛇的基本功能,比如在地图中,用“↑↓←→”控制移动蛇的方向,吃掉食物之后,蛇身体会变长等等。。。。
首先我们得分析,游戏中我们会碰见的一些情况。
①蛇的部分,蛇的身子是一节一节的,此时最容易联想到的数据结构就是顺序表,链表,如果把蛇比做顺序表或者链表,在之后吃到食物的时候,身子肯定会变长,这就涉及到插入的操作,所以为了更高的效率,我们用链表实现我们的蛇的部分,最初我们把蛇身子按照四个结点打印在屏幕。
②蛇的移动,在屏幕上面蛇的移动看起来是整个身子向前方平移一个单位,但是其原理是我们在屏幕的另一个地方把蛇从新打印一遍,又把之前的蛇身子去除掉。
③食物的产生,随机的在地图中产生一个节点,在蛇的头坐标和食物的坐标重复的时候,食物消失,蛇的身子加长,也就是蛇的节点数增加一个。
④蛇在其中的几种状态,正常状态:蛇头节点的坐标没有和墙的坐标以及自己身子的坐标重合,
被自己杀死:蛇头的坐标和蛇身子的坐标重合,
撞墙:蛇头的坐标和墙的坐标重合。
下面我们给出代码,在代码中解释整个游戏的简单运行
#include#include#include#include#include#define FOOD ""//我们把蛇身子和食物,以及地图用黑框框表示,定义为宏 //蛇初始位置的坐标 #define INIT_X 24 #define INIT_Y 2 //设置光标位置,之后会使用这个函数来进行打印蛇身子,食物,地图等 void SetPos(int x,int y){	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);//把标准输出的句柄得到,并交给变量handle,	COORD pos = {0};	pos.X = x;	pos.Y = y;	SetConsoleCursorPosition(handle,pos);//设置handle的输出位置, } //画地图 void DrawMap(void){	int i;	for