美文网首页
C语言小游戏P3

C语言小游戏P3

作者: 兄主的仙人掌 | 来源:发表于2019-01-30 21:32 被阅读0次

    生成僵尸

    玩家可以移动了,可是没有僵尸怎行!

    下一步,生成僵尸!

    为了方便,先定义一个结构体zombie,代码如下:

    struct Zombie {
        int id;
        int x,y;
        int dead;
    };
    

    有僵尸的x坐标,y坐标,还有它死了没(当dead==0时,死;反之,当dead==1时,活),没有变量health,因为我准备秒它,嗯

    then,给它一个实例:

    Zombie z[5];
    

    接下来,定义一个生成函数,代码如下,在下面我会进行说明:

    void m_init(int id)
    {
        int tx,ty;//临时变量,记录x,y坐标
        srand((short)time(NULL));//随机重置
        a:tx=rand()%10;//随机取值tx,ty
        ty=rand()%10;
        if (map[tx][ty]==' ')//如果此格是空格
        {
            map[tx][ty]='Z';//此格为僵尸
            z[id].id=id;//更新僵尸信息
            z[id].x=tx;
            z[id].y=ty;
            z[id].dead=0;//它还没死
        }
        else//如果不是
            goto a;//重新取值
    }
    

    它只维护了一个参数,就是僵尸的id

    其他的在注释里有

    现在的完整代码如下:

    #include <stdio.h>
    #include <time.h>//想要用time()函数,需要这个头文件 
    #define MAXN 100
    int x=3,y=6;
    struct Zombie
    {
        int id;
        int x,y;
        int dead;
    };
    struct Zombie z[5];
    char map[MAXN][MAXN]={"##############",
                          "#            #",
                          "#            #",
                          "#     I      #",
                          "#            #",
                          "#            #",
                          "##############"
                         };
    void m_init(int id)
    {
        int tx,ty;//临时变量,记录x,y坐标
        srand((short)time(NULL));//随机重置
        a:tx=rand()%10;//随机取值tx,ty
        ty=rand()%10;
        if (map[tx][ty]==' ')//如果此格是空格
        {
            map[tx][ty]='Z';//此格为僵尸
            z[id].id=id;//更新僵尸信息
            z[id].x=tx;
            z[id].y=ty;
            z[id].dead=0;//它还没死
        }
        else//如果不是
            goto a;//重新取值
    }
    void putmap(int lines)
    {
        int i;
        for (i=0;i<=lines-1;i++)
        {
            puts(map[i]);
        }
    }
    void move(char ch)//这里我多了一个参数,为了让程序更有条理性
    {
        switch(ch)
        {
            case 'w':
                if (map[x-1][y]==' ')
                {
                    map[x][y]=' ';
                    x--;
                    map[x][y]='I';
                }
                break;
            case 'a':
                if (map[x][y-1]==' ')
                {
                    map[x][y]=' ';
                    y--;
                    map[x][y]='I';
                }
                break;
            case 's':
                if (map[x+1][y]==' ')
                {
                    map[x][y]=' ';
                    x++;
                    map[x][y]='I';
                }
                break;
            case 'd':
                if (map[x][y+1]==' ')
                {
                    map[x][y]=' ';
                    y++;
                    map[x][y]='I';
                }
                break;
            default:
                break;
        }
        system("cls");//清屏
        putmap(7);//输出新地图
    }
    int main()
    {
        char ch;
        int i;
        for (i=0;i<=4;i++)
            m_init(i);
        putmap(7);
        while(1)
        {
            ch = getch();
            move(ch);
        }
        return 0;
    }
    

    Bye~~

    相关文章

      网友评论

          本文标题:C语言小游戏P3

          本文链接:https://www.haomeiwen.com/subject/qwchsqtx.html