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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Mr.Qing 中级黑马   /  2014-9-10 20:57  /  1275 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本人用二维数组设计一个迷宫的小游戏 望各位大牛 前来优化 使用函数进行封装 而且现在为何地图总打印出两遍
#include <stdio.h>


int main(int argc, const char * argv[])
{
    //定义一个地图
    char ch[5][5]=
    {
        {'*','*','*','*','*'},
        {'*','o','*',' ',' '},
        {'*',' ','*',' ','*'},
        {'*',' ',' ',' ','*'},
        {'*','*','*','*','*'}
    };
    for (int i=0; i<5; i++)
    {
        for (int j=0; j<5; j++)
        {
            printf("%c",ch[j]);
        }
        printf("\n");
    }
    int x=1;
    int y=1;
    char street= ' ';
    printf("请通过w,s,a,d来控制小人\n");
    char direction;
    while (1)
    {
        scanf("%c",&direction);
//        char z;
//        scanf("\n",&z);
        char temp;
        switch (direction) {
            case 's':
                if (ch[x+1][y]==street) {
                    temp=ch[x][y];
                    ch[x][y]=ch[x+1][y];
                    ch[x+1][y]=temp;
                    x=x+1;
                }
                break;
            case 'w':
                if (ch[x-1][y]==street) {
                    temp=ch[x][y];
                    ch[x][y]=ch[x-1][y];
                    ch[x-1][y]=temp;
                    x=x-1;
                }
                break;
            case 'a':
                if (ch[x][y-1]==street) {
                    temp=ch[x][y];
                    ch[x][y]=ch[x][y-1];
                    ch[x][y-1]=temp;
                    y=y-1;
                }
                break;
            case 'd':
                if (ch[x][y+1]==street) {
                    temp=ch[x][y];
                    ch[x][y]=ch[x][y+1];
                    ch[x][y+1]=temp;
                    y=y+1;
                }
                break;
            default:
                break;
        }
        for (int i=0; i<5; i++)
        {
            for (int j=0; j<5; j++)
            {
                printf("%c",ch[j]);
            }
            printf("\n");
        }
        if (y==4)
        {
            printf("恭喜\n");
            break;
        }
    }
    return 0;
}


3 个回复

正序浏览
小月格子猫 发表于 2014-9-11 01:06
你这个迷宫根本就都不起来呀,至于你说的打印两遍,把scanf("%c",&direction);,%c前面加一个空格
就好了 ...

这个我知道了  请大神指点我少了什么 我运行正常啊
回复 使用道具 举报
你这个迷宫根本就都不起来呀,至于你说的打印两遍,把scanf("%c",&direction);,%c前面加一个空格
就好了,还有你遍历数组的时候,没发现少些点什么吗??
下次代码写完整了,在发
回复 使用道具 举报
。。。。。这里传智的人很多的哦(⊙o⊙)哦。。。~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马