前几天有个同学加我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语言贪吃蛇源代码控制台(一),会动的那种哦!的更多相关文章

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

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

  2. c语言贪吃蛇详解3.让蛇动起来

    c语言贪吃蛇详解3.让蛇动起来 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 上次 ...

  3. c语言贪吃蛇详解-2.画出蛇

    c语言贪吃蛇详解-2.画出蛇 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 蛇的身 ...

  4. c语言贪吃蛇详解1.画出地图

    c语言贪吃蛇详解-1.画出地图 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 首先 ...

  5. c语言贪吃蛇详解5.GameOver功能与显示成绩

    c语言贪吃蛇详解5.GameOver功能与显示成绩 以前我们已经做出来了一个能吃东西变长的蛇.不过它好像不会死... 现在就来实现一下game over的功能吧. 写个函数判断蛇是否撞到自己或者撞到墙 ...

  6. c语言贪吃蛇详解4.食物的投放与蛇的变长

    c语言贪吃蛇详解4.食物的投放与蛇的变长 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识 ...

  7. 程序游戏推荐(C语言贪吃蛇,python天天酷跑(需要安装pygame),js是狠人就坚持30s)

    下面是下载位置,我把他们上传到我的文件下了. C语言贪吃蛇:https://files.cnblogs.com/files/ITXiaoAng/%E8%B4%AA%E5%90%83%E8%9B%87. ...

  8. c语言贪吃蛇

    思路:函数gotoxy(x,y)使光标移植屏幕的x,y坐标(屏幕左上角为0,0),用来绘制蛇和界面,color()函数用来设置绘制的颜色.设有snakelong节,第i节蛇的x坐标为x[i],y坐标为 ...

  9. [C语言]贪吃蛇_结构数组实现

    一.设计思路 蛇身本质上就是个结构数组,数组里存储了坐标x.y的值,再通过一个循环把它打印出来,蛇的移动则是不断地刷新重新打印.所以撞墙.咬到自己只是数组x.y值的简单比较. 二.用上的知识点 结构数 ...

随机推荐

  1. CF819B Mister B and PR Shifts 思维题

    分析 这道题\(n\leq10^{6}\),显然\(n^{2}\)的暴力是无法解决问题的 那么我们可以考虑数列的某一种性质 因为最终的答案是\(\sum{n \atop i=1} |p_i - i|\ ...

  2. 树的子结构(剑指offer-17)

    题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 解析 解答 /** public class TreeNode { int val = 0; Tr ...

  3. CBV源码与APIView源码解析

    一.CBV源码解析 在我们写cbv的时候在url中和fbv的区别就是是否调用了as_view()方法,所以关键入手点就是这个方法 @classonlymethod # 这是类的绑定方法,这个cls是我 ...

  4. Java入门系列之重写

    前言 关于所有Java系列文章面向有一定基础的童鞋,所写每一篇希望有一定含金量,有些内容可能会从Java整个语法全局考虑穿插后续要讲解的内容以成系统,若不理解,请看完后再学习.上一节我们讲解完了fin ...

  5. 如果你想写自己的Benchmark框架

    目录 简介 八条军规 第一条军规 第二条军规 第三条军规 第四条军规 第五条军规 第六条军规 第七条军规 最后一条军规 总结 简介 使用过JMH的同学一定会惊叹它的神奇.JMH作为一个优秀的Bench ...

  6. SQL字符串拼接FOR XML PATH

    在工作中难免会遇到数据库中数据要进行拼接的问题,字符串拼接可以是用SQL的拼接也可以使用C#的拼接,本次说的是使用SQL进行拼接. 首先插入测试语句: --测试语句,准备创建表的语句:如下 CREAT ...

  7. javascript基础(四): 操作表单

    表单是什么?form-----DOM树 文本框----text 下拉框----select 单选框----radio 多选框----checkbox 隐藏域----hidden 密码框----pass ...

  8. 数据可视化之powerBI技巧(二)Power BI性能分析器,原来还有这个功能

    ​性能分析器是Power BI前几个月推出的功能,主要用于检测视觉对象和DAX的性能如何,该功能的使用比较简单,首先勾选这个功能, 然后点击开始记录并刷新视觉对象,就可以看出每个元素耗费的时间,如下图 ...

  9. 数据可视化之分析篇(十)Power BI应用:如何计算在职员工数量?

    ​https://zhuanlan.zhihu.com/p/128652582 经常碰到的一类问题是,如何根据起止日期来计算某个时间点的数量,比如: 已知合同的生效日期和到期日期,特定日期的有效合同有 ...

  10. Python之爬虫(二十六) Scrapy登录知乎

    因为现在很多网站为了限制爬虫,设置了为只有登录才能看更多的内容,不登录只能看到部分内容,这也是一种反爬虫的手段,所以这个文章通过模拟登录知乎来作为例子,演示如何通过scrapy登录知乎 在通过scra ...