贪吃蛇——C语言实现(详细代码讲解)

贪吃蛇——C语言实现

贪吃蛇是非常经典的一款游戏,本次我们模拟在控制台实现贪吃蛇游戏,也就是实现贪吃蛇的基本功能,比如在地图中,用“↑↓←→”控制移动蛇的方向,吃掉食物之后,蛇身体会变长等等。。。。

首先我们得分析,游戏中我们会碰见的一些情况。

①蛇的部分,蛇的身子是一节一节的,此时最容易联想到的数据结构就是顺序表,链表,如果把蛇比做顺序表或者链表,在之后吃到食物的时候,身子肯定会变长,这就涉及到插入的操作,所以为了更高的效率,我们用链表实现我们的蛇的部分,最初我们把蛇身子按照四个结点打印在屏幕。

②蛇的移动,在屏幕上面蛇的移动看起来是整个身子向前方平移一个单位,但是其原理是我们在屏幕的另一个地方把蛇从新打印一遍,又把之前的蛇身子去除掉。

③食物的产生,随机的在地图中产生一个节点,在蛇的头坐标和食物的坐标重复的时候,食物消失,蛇的身子加长,也就是蛇的节点数增加一个。

④蛇在其中的几种状态,正常状态:蛇头节点的坐标没有和墙的坐标以及自己身子的坐标重合,

被自己杀死:蛇头的坐标和蛇身子的坐标重合,

撞墙:蛇头的坐标和墙的坐标重合。

下面我们给出代码,在代码中解释整个游戏的简单运行

 

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <memory.h>
#include <string.h>
#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 (i=0;i<58;i+=2)//画出地图的上边界,在控制界面每一个汉字,占两位,所以每次i+2

	{
		SetPos(i,0);
		printf(FOOD);
	}
	for (i=0;i<58;i+=2)//画出地图的下边界
	{
		SetPos(i,26);
		printf(FOOD);
	}
	for (i=0;i<26;i++)//
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值