c语言贪吃蛇详解1.画出地图
c语言贪吃蛇详解-1.画出地图
前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解。我将分几步来教大家写一个贪吃蛇小游戏。由于大家c语言未学完,这个教程只涉及数组和函数等知识点。
首先我们使用宏定义来定义两个常数,地图的高(H)和地图的宽(W)
#define H 20
#define W 20
这样写的好处是以后改变地图的大小就不用更改写好的代码了,只要修改下宏定义。节省了时间又避免改出bug
接下来,我们定义一个二维数组,这个二维数组的每一个值刚好对应了平面的每一个点,这样就可以方便地自定义地图了。可以设置障碍物什么的了。然后我们用数组a[H][W]来存储地图情况,如果a[i][j]==0,就说明第i+1行,第j+1列是空的,如果a[i][j]==1,就说明这个点是障碍物。
然后我们使用下面的代码来把地图数组的边框做出来,就是让数组边缘等于1。(int全局变量默认为0)。
void init()
{
int i,j;
for(i=; i<H; i++)
{
a[i][]=; //让第一列为1
a[i][W-]=; //让最后一列为1
}
for(j=; j<W; j++)
{
a[][j]=; //让第一行为1
a[H-][j]=; //让最后一行为1
}
}
展开代码
这个只是最简单的地图,如果你有其他想法可以自由发挥,画出自己的地图。
地图画好了,剩下的就是画出地图了。我们把画地图的过程也写为一个函数,这样能使代码结构更清晰,更容易找出bug。画地图就简单了,就是遍历整个数组,然后值为0的地方输出空格,值为1的地方输出一个符号,符号按自己喜好,我这里使用了#。
然后我们发现长宽不合适,我们可以修改刚开始的H和W的值。
按自己喜好调整,比如这样
#define H 23
#define W 75
然后看看是不是比刚才好看了。知道宏定义的好处了吧。
好了,到这里为止,我们已经学会了画地图。
这只是最简单的地图,通过修改地图数组,我们就能做出很多不一样的地图。
下面附上第一步的完整代码。
#include <stdio.h>
#include <stdlib.h>
#define H 23
#define W 75 int a[H][W]; //地图数组 void init() //程序开始时的初始化操作
{
int i,j;
for(i=; i<H; i++)
{
a[i][]=; //让第一列为1
a[i][W-]=; //让最后一列为1
}
for(j=; j<W; j++)
{
a[][j]=; //让第一行为1
a[H-][j]=; //让最后一行为1
}
} void drawMap() //画地图
{
int i,j;
for(i=;i<H;i++)
{
for(j=;j<W;j++) //两重for循环遍历数组
{
if(a[i][j]==) //为0输出空格
printf(" ");
else //为1输出#
printf("#");
}
printf("\n"); //别忘了换行
}
} int main()
{
init();
drawMap();
return ;
}
c语言贪吃蛇详解1.画出地图的更多相关文章
- c语言贪吃蛇详解-2.画出蛇
c语言贪吃蛇详解-2.画出蛇 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 蛇的身 ...
- c语言贪吃蛇详解3.让蛇动起来
c语言贪吃蛇详解3.让蛇动起来 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 上次 ...
- c语言贪吃蛇详解5.GameOver功能与显示成绩
c语言贪吃蛇详解5.GameOver功能与显示成绩 以前我们已经做出来了一个能吃东西变长的蛇.不过它好像不会死... 现在就来实现一下game over的功能吧. 写个函数判断蛇是否撞到自己或者撞到墙 ...
- c语言贪吃蛇详解4.食物的投放与蛇的变长
c语言贪吃蛇详解4.食物的投放与蛇的变长 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识 ...
- C/C++编程笔记:C语言贪吃蛇源代码控制台(二),分数和食物!
接上文<C/C++编程笔记:C语言贪吃蛇源代码控制台(一),会动的那种哦!>如果你在学习C语言开发贪吃蛇的话,零基础建议从上一篇开始哦!接下来正式开始吧! 三.蛇的运动 上次我已经教大家画 ...
- C/C++编程笔记:C语言贪吃蛇源代码控制台(一),会动的那种哦!
前几天有个同学加我QQ私聊我说他们老师布置了一个贪吃蛇,他不知道怎么写所以来找我求解,我给他简单讲解了思路和一些难点之后他也能够自己独立将项目完成了!考虑到更多同学可能有贪吃蛇上的问题,今天有时间就来 ...
- C语言内存对齐详解(2)
接上一篇:C语言内存对齐详解(1) VC对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式.VC 中提供了#pr ...
- C语言内存对齐详解(3)
接上一篇:C语言内存对齐详解(2) 在minix的stdarg.h文件中,定义了如下一个宏: /* Amount of space required in an argument list for a ...
- 一个简单的C语言程序(详解)
C Primer Plus之一个简单的C语言程序(详解) #include <stdio.h> int main(void) //一个简单的 C程序 { int num; //定义一个名为 ...
随机推荐
- 【NOIP2015提高组】 Day1 T2 信息传递
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- ASP.NET MVC 分页问题
在使用Ajax.Pager进行分页的时候需要注意一下几个方面: 1.一定要引入jquery.unobtrusive-ajax.min.js这个js: 2.一定要在页面中使用注册分页器,注册方法:@{H ...
- Spring IOC(四)总结
目录 1.spring容器中Bean生命周期 2.IOC容器中核心接口 3.IOC容器启动流程 4.IOC依赖注入流程 =============正文分割线================== Spr ...
- JavaWeb之Eclipse中使用Maven构建SpringMVC项目
为了学习spring和maven我这也是拼了老命了,光使用maven配置springmvc我花了上周一周的时间,下班回来就搞,一直有bug,一个bug接着一个,昨天一整天都在解决配置的问题,让大学同学 ...
- UWP 磁贴设置
一:需求 一款好看好用的应用,对于UWP来说,动态的磁贴必不可少. 二:TileUpdateManager类 和TileUpdater类 如果需要更改或更新应用的磁贴,那么首先需要获得TileUpda ...
- SIP简介,第1部分:SIP初探
说明:以下内容来着之前下载的一份文档,现将概念部分摘录在BLog,完成文档将放在文件中. SIP简介,第1部分:SIP初探 时间:2006-04-07作者:Emmanuel Proulx浏览次数: 2 ...
- IE10和IE11中滑动条遮挡页面问题
今天在开发的过程中前端项目,在小设备上会出现滑动条,这本没什么,在其他浏览器上都很正常,但是在IE10和IE11上出现了问题,发现侧边滑动条挡住了一部分页面的内容,因为侧边有要操作的按钮,这就是一个很 ...
- FATE
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- Android 开发笔记___Intent的使用
public class ActRequestActivity extends AppCompatActivity implements OnClickListener { private EditT ...
- HTML DOM应用案例1
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...