• 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)。

     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("
    ");               //别忘了换行
        }
    }
    
    int main()
    {
        init();
        drawMap();
        return 0;
    }

     

  • 相关阅读:
    MySQL Partition--分区基础
    MySQL Replication--跳过复制错误
    MySQL--SHOW PROCESSLIST
    MySQL InnoDB Engine--缓冲器数据交换
    MySQL InnoDB Engine--数据预热
    MySQL Profiling--常用命令
    Linux--用户管理
    vi和vim快捷键的使用
    vi和vim
    xftp使用
  • 原文地址:https://www.cnblogs.com/hjw1/p/7906918.html
Copyright © 2020-2023  润新知