A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 396944929 中级黑马   /  2015-1-5 23:02  /  1175 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 396944929 于 2015-1-5 23:02 编辑

#include <stdio.h>
#define M 6
#define N 6
int main(int argc, const char * argv[]) {
    char a[M][N]={  {'#',' ','#','#','#','#'},
                    {'#',' ','#','#','#','#'},
                    {'#',' ','#',' ',' ',' '},
                    {'#',' ','#',' ','#','#'},
                    {'#',' ',' ',' ','#','#'},
                    {'#','#','#','#','#','#'},};
    a[0][1]='0';
    int x=0,y=1;
    char i;

    while (i!='q')
    {
        for (int i=0; i<M; i++)
        {
            for (int j=0; j<N;j++)
            {
                printf("%c",a[j]);
            }
            printf("\n");
        }
        switch (i=getchar())
        {
            case 'w':;
            case 'W':
            {
                if(x!=0&&a[x-1][y]==' ')
                {
                    char z;
                    z=a[x][y];
                    a[x][y]=a[x-1][y];
                    a[x-1][y]=z;
                    x--;
                }
            };break;
            case 's':
            case 'S':
            {
                if(x!=(M-1)&&a[x+1][y]==' ')
                {
                    char z;
                    z=a[x][y];
                    a[x][y]=a[x+1][y];
                    a[x+1][y]=z;
                    x++;
                }
            };break;
            case 'a':
            case 'A':
            {
                if(y!=0&&a[x][y-1]==' ')
                {
                    char z;
                    z=a[x][y];
                    a[x][y]=a[x][y-1];
                    a[x][y-1]=z;
                    y--;
                }
            };break;
            case 'd':
            case 'D':
            {
                if(y!=N-1&&a[x][y+1]==' ')
                {
                    char z;
                    z=a[x][y];
                    a[x][y]=a[x][y+1];
                    a[x][y+1]=z;
                    y++;
                }
            };break;
            case 'q':break;
        }
        printf("\n");
        if (x==2&&y==5) {
            printf("出来了!\n");
            break;
        }

    }

}
这个是我写的迷宫游戏  里面涉及到了我们常用的while循环和switch选择判断和if语句~每个都不难  但是组合到一起就会产生意想不到的效果 感觉特别好 大家可以试试  while是一个死循环 用来让小人“0”在迷宫中移动。里面有一个switch来判断上下左右的。还有一个二维数组用来制作迷宫地图 大家有兴趣可以自己加地图 只要改上面的红定义M N的数组容量就可以了~通过判断你要走的方向是不是墙(#)来移动小人(0)然后一点点走出迷宫。移动就是让小人(0)和要走方向的路(‘ ’)互换数组位置就可以了,大家可以试试~ 不懂的问我哦

1 个回复

倒序浏览
本帖最后由 396944929 于 2015-1-5 23:01 编辑

很不错呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马