前几天有个同学加我QQ私聊我说他们老师布置了一个贪吃蛇,他不知道怎么写所以来找我求解,我给他简单讲解了思路和一些难点之后他也能够自己独立将项目完成了!考虑到更多同学可能有贪吃蛇上的问题,今天有时间就来写一下题解。我将分几步来教大家写一个贪吃蛇小游戏。由于大家可能C语言未学完,这个教程只涉及数组和函数等知识点。

一、画地图

首先我们使用宏定义来定义两个常数,地图的高(H)和地图的宽(W)

#defineH 20

#defineW 20

这样写的好处是以后改变地图的大小就不用更改写好的代码了,只要修改下宏定义。节省了时间又避免改出bug

接下来,我们定义一个二维数组,这个二维数组的每一个值刚好对应了平面的每一个点,这样就可以方便地自定义地图了。可以设置障碍物什么的了。然后我们用数组a[H][W]来存储地图情况,如果a[i][j]==0,就说明第i+1行,第j+1列是空的,如果a[i][j]==1,就说明这个点是障碍物。

然后我们使用下面的代码来把地图数组的边框做出来,就是让数组边缘等于1。(int全局变量默认为0)。

这个只是最简单的地图,如果你有其他想法可以自由发挥,画出自己的地图。

地图画好了,剩下的就是画出地图了。我们把画地图的过程也写为一个函数,这样能使代码结构更清晰,更容易找出bug。画地图就简单了,就是遍历整个数组,然后值为0的地方输出空格,值为1的地方输出一个符号,符号按自己喜好,我这里使用了#。

然后我们发现长宽不合适,我们可以修改刚开始的H和W的值。

按自己喜好调整,比如这样

#defineH 23

#defineW 75

然后看看是不是比刚才好看了。知道宏定义的好处了吧。

好了,到这里为止,我们已经学会了画地图。

这只是最简单的地图,通过修改地图数组,我们就能做出很多不一样的地图。

下面附上第一步的完整代码。

二、画蛇

蛇的身体就是一些点,我们可以用二维数组把这些点的坐标存起来。

先声明一个足够大的二维数组。虽然我觉得你们玩不了这么长(手动滑稽)。

int s[H*W][2];

这样s[0][0]表示蛇头的i坐标,s[0][1]表示蛇头的j坐标。s[i][0]表示蛇第i+1个点的i坐标。s[i][1]同理。

然后再声明一个int变量存储蛇的长度。然后把这些初始化操作都放进上面init函数里面。

int sLength;        //蛇的长度

sLength=4;          //让蛇的最初长度为4

然后给刚开始的蛇身几个初始坐标

然后接下来我们把蛇画出来,我这里有一个函数(百度的),可以实现移动光标到指定点。注:要添加头文件windows.h

如下:

然后就可以先画地图,然后通过移动光标在地图上画出蛇。

好,看看效果

蛇确实出来了,但是那个光标很碍事,在init函数开始时加入下面代码可隐藏关标

CONSOLE_CURSOR_INFO cursor_info = {1, 0};

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);

这样就没有光标了。

到现在为止的代码。

今天先到这里吧!大家不要着急,下篇文章我会把蛇剩下的部分分享完整!

微信公众号:C语言编程学习基地,学习C/C++编程知识,想要成为一个更加优秀的程序员,或者你学习C/C++的时候有难度,可以来笔者的C语言C++零基础编程学习Q圈9541726787一起成长!

贪吃蛇c语言自动寻路,C/C++编程笔记:C语言贪吃蛇源代码控制台(一),会动的那种哦!...相关推荐

  1. 贪吃蛇统计分数的c语言代码,C/C++编程笔记:C语言贪吃蛇源代码控制台(二),分数和食物!...

    接上文<C/C++编程笔记:C语言贪吃蛇源代码控制台(一),会动的那种哦!>如果你在学习C语言开发贪吃蛇的话,零基础建议从上一篇开始哦!接下来正式开始吧! 三.蛇的运动 上次我已经教大家画 ...

  2. java与c语言哪个好学_Java编程和C语言哪个好学

    原标题:Java编程和C语言哪个好学 学哪种编程语言好?计算机编程语言非常多,诸如Java.C.C++.PHP等,很多人在选择的时候都会觉得头大.到底学哪种编程语言好? 很多人都拿Java和c相比较, ...

  3. c语言与汇编语言混合编程实验,C语言与汇编语言混合编程实验

    混合编程方法: 模块链接法 汇编指令嵌入法 1: 模块链接法则 模块链接法是指分别用汇编语言和C语言实现独立的模块(或子程序),再用链接程序把各模块生成的obj文件连接成一个可执行程序. 1:C语言调 ...

  4. c语言数组的一维编程,【C语言】转换一维数组

    #include #define MAX_SIZE 20 /* 最大数组个数 */ void TransposeArray(int *arr,int size); int main() { int s ...

  5. c语言常考的编程题,C语言操作题常考编程题库

    <C语言操作题常考编程题库>由会员分享,可在线阅读,更多相关<C语言操作题常考编程题库(32页珍藏版)>请在人人文库网上搜索. 1.C语言编程题覆盖到的算法:1.个人所得税计算 ...

  6. c语言t0中断方式编程,PIC C语言编程_PICC中断函数的实现

    PICC可以实现C语言的中断服务程序.中断服务程序有一个特殊的定义方法: voidinterruptISR(void); 其中的函数名"ISR"可以改成任意合法的字母或数字组合,但 ...

  7. 小鸟飞行c语言报告,C/C++编程笔记:飞翔的小鸟(Flappy Bird)——C语言版本

    /* 1.创建一个可视化窗口 2.显示一张背景图 */ #include #include #include #include #include #include #pragma comment(li ...

  8. 2019年青少年编程c语言考试,全国青少年软件编程(C语言)等级考试试题 2019年9月(一级含答案)...

    ​全国青少年软件编程(C语言)等级考试试题 2019年9月(一级含答案) 一.编程题(第1部分) (共4题,每题12分,共48分) 1.输出第二个整数 输入三个整数,把第二个输入的整数输出. 时间限制 ...

  9. java和c语言哪个简单_Java编程和C语言哪个好学

    学哪种编程语言好?计算机编程语言非常多,诸如Java.C.C++.PHP等,很多人在选择的时候都会觉得头大.到底学哪种编程语言好? 很多人都拿Java和c相比较,那么今天小编就来先说说我的个人理解吧, ...

最新文章

  1. Exchange server 2010脱机工作簿故障问题
  2. 清除应用数据后,应用对应的widget的数据无法刷新
  3. linux系统下安装配置iSCSI教程
  4. elasticsearch(es)分布式全文检索引擎 简介
  5. Thinkpad系统重装终极版
  6. linux下查看tomcat的启动日志
  7. 项目中SQL语句文件保存及提取方法
  8. (三)Qt语言国际化
  9. python第三方库文件传输_Python第三方库在Excel文件读写中的应用
  10. ArcGIS(ArcMap)进行缓存切片
  11. GB28181协议简介及实践
  12. 我国标准时间授时方法
  13. 经济学中的同比环比,负增长,正增长
  14. Meta-Tracker: Fast and Robust Online Adaptation for Visual Object Trackers 论文
  15. 4月9本最新程序员专业书:Go语言、深度学习、量子计算等与您相约
  16. 网关支付、、快捷支付、银行卡支付等网上常见支付方式接口说明
  17. vue与C#实现自定义表单审批流程构建-后端
  18. ji计算机内存不足怎么回事,Win7提示内存不足的原因及应对措施
  19. python删除图片_python小应用之删光你的珍藏图片
  20. C++小游戏之停电救援

热门文章

  1. 动作捕捉技术应用于地面移动机器人协同
  2. 秘密共享之算术共享、布尔共享
  3. 软件测试周刊(第20期):恐惧,来自只思考却不行动
  4. vue 返回刷新页面 不keepAlive
  5. ORACLE错误一览表,方便大家查询
  6. hive动态分区报错
  7. 支付宝会员卡开发梳理
  8. C语言项目设计——程序设计
  9. 渗透测试-SQL注入之sqlmap的使用方法及实战案例
  10. hping - 使用 TCP/UDP ping 解决防火墙拦截 ICMP ping