用C语言实现简易贪吃蛇

本文介绍了如何使用C语言实现简易贪吃蛇游戏。游戏规则是通过键盘控制蛇在规定区域内移动,吃掉随机出现的食物以增长蛇的身体。文章详细讲解了所需的头文件、函数实现、边界设置、蛇的移动逻辑、食物生成、游戏暂停与继续、碰撞检测等功能的实现方法,并展示了游戏的运行结果。
摘要由CSDN通过智能技术生成

#简易贪吃蛇(c语言)

###贪吃蛇游戏是指在规定的方框内,通过操控键盘上的 ↑ ↓ ← → 键 来进行贪吃蛇的方向控制。在方框内吃掉随机出现的食物来延长蛇的身体。

###需要的头文件及函数原型

    #ifndef __SNAKE_H__
    #define __SNAKE_H__
    #define _CRT_SECURE_NO_WARNINGS 1
    #include <stdio.h>
    #include <stdlib.h>
    #include <Windows.h>
    #define WALL "X"   //墙壁符号
    #define FOOD "O"   //蛇的符号
    #define INIT_X 20  //初始化蛇的位置 X坐标
    #define INIT_Y 20  //初始化蛇的位置 Y坐标
    typedef int SDataType;
    typedef struct SnakeNode {
   
    	int x;//节点的x坐标
    	int y;//节点的y坐标
    	struct SnakeNode * next;
    }SnakeNode ,*pSnakeNode;
    
    enum Direction {
   
    	UP = 1,
    	DOWN,
    	LEFT,
    	RIGHT,
    };//蛇当前运行方向状态
    enum State
    {
   
    	OK,  //存活
    	NORMAL_END,  //按esc正常退出
    	KILL_BY_WALL,//撞到墙壁死亡
    	KILL_BY_SELF,//撞到蛇身死亡
    };//蛇的状态
    typedef struct Snake
    {
   
    	SnakeNode *psnake;// 蛇的头结点
    
    	int TotalScore; //总分数
    	int AddScore;	//分数增加比
    	int SleepTime;	//蛇的运行速度(电脑刷新间隔)
    	enum Direction Dir; //蛇当前所处的方向状态
    	enum State Status;  //社当前的状态
    	SnakeNode *pFood;   //食物所处的位置坐标
     }Snake , *pSnake;
    //蛇结构体
    void GameStart(pSnake ps);//游戏开始函数
    void InitSnake(pSnake ps);//初始化蛇函数
    void SetPos(int x, int y);//运用控制台命令设置节点出现的位置
    void PrintMap();		  //打印地图
    pSnakeNode BuyNode();	  //生成一个节点
    void CreateSnake(pSnake ps);//创建一个蛇
    void CreateFood(pSnake ps);//创建一个食物节点
    void GameRun(pSnake ps);  //游戏运行函数
    void Pause();			  //游戏暂停函数
    int HasNextNode(pSnakeNode pf, pSnakeNode pn);//判断蛇头所指向的下一个节点是不是食物节点
    void EatFood(pSnake ps, pSnakeNode pn);//进食食物使得整体延长
    void NoFood(pSnake ps, pSnakeNode pn); //没有食物节点向蛇头方向运行
    void SnakeMove(pSnake ps);//蛇的方向操作函数
    void helpinfo(pSnake ps); //当前状态
    void KillByWall(pSnake ps);//被墙撞死
    void KillBySelf(pSnake ps);//蛇吃自己
    void GameEnd(pSnake ps); //游戏结束释放空间,打印结果
    #endif//__SNAKE_H__
    //test.c 
    	#include "Snake.h"
    void test()
    {
   
    	Snake ps;
    	GameStart(&ps);
    	GameRun(&ps);
    	GameEnd(&ps);
    }
    int main()
    {
   
    	test();
    	return 0;
    }

##函数实现分析

    	#include "Snake.h"
    void InitSnake(pSnake ps)
    //初始化蛇函数
    {
   
    	ps->AddScore = 10;
    	ps->Dir = UP;
    	ps->SleepTime = 200;
    	ps->TotalScore = 0;
    	ps->psnake = NULL;
    	ps->Status = OK;
    }
    void SetPos(int x, int y)
    //运用控制台命令设置节点出现的位置
    {
   
    	COORD pos; 
    	HANDLE handle;
    	pos.X = x;
    	pos.Y = y;
    	handle = GetStdHandle(STD_OUTPUT_HANDLE);
    	SetConsoleCursorPosition(handle,pos);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值