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

C语言小游戏P2

作者: 兄主的仙人掌 | 来源:发表于2019-01-28 11:57 被阅读0次

我得动呀!

昨天创建完了项目,我就跑了,嗯。

首先,我们把Dev-C++自动生成的代码删去,写上:

#include <stdio.h>
int main()
{
    
    return 0;
}

这是C语言必有的main函数,不用给他任何参数。

然后,我们声明一张地图,简单点,把它放在全局变量,就:

#define MAXN 100
char map[MAXN][MAXN]={"##############",
                    "#            #",
                    "#            #",
                    "#     I      #",
                    "#            #",
                    "#            #",
                    "##############"
                    };

这里我用#define预处理名声明了一个常量MAXN,便于以后修改。

定义完地图后,得把它输出到屏幕上,很简单:

void putmap(int lines)
{
    int i;
    for (i=0;i<=lines-1;i++)
    {
        puts(map[i]);
    }
}

在main函数调用这个函数:

putmap(7);

运行结果如下:

运行结果

这里我定义了一个函数,用于输出地图,它只需维护一个参数,就是地图的行数lines。

接下来,让这个角色动起来,实现代码如下,我会在下面进行解释:

void move()
{
    char ch;
    ch=getch();
    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);//输出新地图
}

咱们就解释case 'w':吧,其他的以此类推,

先是一个if (map[x-1][y]==' ')判断下一步是不是空格,没学过二维坐标系的同学不要把这个和二维坐标系搞混了,这里的xy正好和二维坐标系反了,所以别搞混了。

  • map[x][y]=' '; `让这格为空格;
  • x--; 让角色的x坐标减1;
  • map[x][y]='I'; 减完后让这格为角色字母;

其他的以此类推。
完整代码如下:

#include <stdio.h>
#define MAXN 100
int x=3,y=6;
char map[MAXN][MAXN]={"##############",
                      "#            #",
                      "#            #",
                      "#     I      #",
                      "#            #",
                      "#            #",
                      "##############"
                     };
void putmap(int lines)
{
    int i;
    for (i=0;i<=lines-1;i++)
    {
        puts(map[i]);
    }
}
void move()
{
    char ch;
    ch=getch();
    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()
{
    putmap(7);
    while(1)
    {
        move();
    }
    return 0;
}

其中while(1)起到的作用就是死循环。

今天就讲到这,拜拜!

相关文章

网友评论

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

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