加盟网站有哪些,东营兴通建设工程公司网站,如何选择常州网站建设,wordpress筑爱网游戏背景#xff1a;
贪吃蛇是久负盛名的游戏#xff0c;它也和俄罗斯⽅块#xff0c;扫雷等游戏位列经典游戏的⾏列。 实现基本的功能#xff1a;
贪吃蛇地图绘制 蛇吃⻝物的功能 #xff08;上、下、左、右⽅向键控制蛇的动作#xff09; 蛇撞墙死亡 蛇撞⾃⾝死亡 计…游戏背景
贪吃蛇是久负盛名的游戏它也和俄罗斯⽅块扫雷等游戏位列经典游戏的⾏列。 实现基本的功能
贪吃蛇地图绘制 蛇吃⻝物的功能 上、下、左、右⽅向键控制蛇的动作 蛇撞墙死亡 蛇撞⾃⾝死亡 计算得分 蛇⾝加速、减速 暂停游戏
技术要点 C语⾔函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等。 一、地图的制作思路
关于地图的制作我们要将地图制作成什么样子呢 在我们的预想中我们需要使用控制台的界面进行贪吃蛇的游戏操作。 控制台的设置-CSDN博客https://blog.csdn.net/2301_76445610/article/details/133975868?spm1001.2014.3001.5501 二、地图内的场景设置
在游戏地图上我们打印墙体使用宽字符‘□’打印蛇使用宽字符●打印食物使用宽字符★ 三、地图坐标和宽字符的冲突
由于我们是在控制台上进行实现贪吃蛇游戏所以我们需要在控制台上实现以宽字符为主体的墙面、蛇身、食物但是在控制台中我们是以普通字符为主作为一个坐标点的。
而普通字符是以一个字节为单位可是宽字符是以两个字节为一组的。
并且根据打印宽字符的特点只需要打印一个坐标点就能将宽字符完全显现比如在55上打印宽字符则宽字符会占据两个字节的位置会把65的位置也占了 。 所以最后我们在考虑墙面、蛇身、食物的时候我们必须要往2的倍数方向进行考虑特别是蛇身我们需要将蛇身以2的倍数进行构造。
C语言 ——宽字符-CSDN博客https://blog.csdn.net/2301_76445610/article/details/133978119?spm1001.2014.3001.5501
四、蛇的身体分析
对于蛇的身体我们需要用到链表的知识将蛇的身体化为一个又一个字节使用指针进行连接。
typedef struct SnakeNode
{int x;int y;struct SnakeNode* next;}SnakeNode* pSnakeNode;
int x int y 表示控制台的坐标。 SnakeNode 是使用 typedef 将struct SankNode 进行重命名后的名字方便以后书写suruct SankNode * pSnakeNode 是 使用 typedef 将 struct SankNode * 这个指针类型进行重命名以后需要使用 struct SankNode * 可以用 pSnakeNode 代替 。 五、贪吃蛇游戏的文件: test.c —— —— 游戏的整体运行测试snake.c —— —— 函数的实现snake.h —— —— 函数和类型的声明 贪吃蛇的游戏结构
需要的内容 对于一个贪吃蛇游戏蛇是必须存在且因为蛇是一个链表形式所以我们需要蛇的头节点的指针同时根据贪吃蛇的游戏规则我们需要一个食物且因为吃掉食物蛇会变长因此食物也可以看作链表中的一个节点只是这个节点需要使用链表的某些操作进行插入到蛇的身体中所以我们需要食物的节点指针因为贪吃蛇是一个看长度积分的游戏所以我们需要一个累计分数的变量同时我们也需要对食物赋予分数同时我们需要对蛇进行一个速度的附加值让它加速减速对于操作蛇是一个非常重要的东西我们要让蛇上下左右进行移动最后我们需要对整个游戏的状态进行判断和显示出该状态下会出现的结果
//描述蛇的方向
enum DIRECTION
{UP 1,DOWNLEFTRIGHT
}//游戏的状态
enum GAME_STATUS
{//正常运行OK,//按ESC退出END_NORMAL//撞墙死亡KILL_BY_WALL,//吃到自己死亡KILL_BY_SELF}//贪吃蛇的游戏结构
struct Snake
{pSnakeNode _pSnake;//指向贪吃蛇头结点的指针pSnakeNode _pFood;//指向食物结点的指针int _Score;//贪吃蛇累计的总分Foodweight;//-个食物的分数intint _sleepTime;//每走一步休息的时间时间越短速度越快时间越长速度越慢enum DIRECTION _Dir;//描述蛇的方向enum GAME_STATUS _status;//游戏的状态: 正常、退出、撞墙、吃到自己} 游戏的创建
初始化
snake.c 未完待续