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)。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 void init() 2 { 3 int i,j; 4 for(i=0; i<H; i++) 5 { 6 a[i][0]=1; //让第一列为1 7 a[i][W-1]=1; //让最后一列为1 8 } 9 for(j=0; j<W; j++) 10 { 11 a[0][j]=1; //让第一行为1 12 a[H-1][j]=1; //让最后一行为1 13 } 14 }
这个只是最简单的地图,如果你有其他想法可以自由发挥,画出自己的地图。
地图画好了,剩下的就是画出地图了。我们把画地图的过程也写为一个函数,这样能使代码结构更清晰,更容易找出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=0; i<H; i++) { a[i][0]=1; //让第一列为1 a[i][W-1]=1; //让最后一列为1 } for(j=0; j<W; j++) { a[0][j]=1; //让第一行为1 a[H-1][j]=1; //让最后一行为1 } } void drawMap() //画地图 { int i,j; for(i=0;i<H;i++) { for(j=0;j<W;j++) //两重for循环遍历数组 { if(a[i][j]==0) //为0输出空格 printf(" "); else //为1输出# printf("#"); } printf("\n"); //别忘了换行 } } int main() { init(); drawMap(); return 0; }