黑马程序员技术交流社区

标题: C语言中的二维数组 [打印本页]

作者: Mr.Qing    时间: 2014-9-10 20:57
标题: C语言中的二维数组
本人用二维数组设计一个迷宫的小游戏 望各位大牛 前来优化 使用函数进行封装 而且现在为何地图总打印出两遍
#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;
}



作者: 达摩八戒    时间: 2014-9-10 23:34
。。。。。这里传智的人很多的哦(⊙o⊙)哦。。。~~~
作者: 小月格子猫    时间: 2014-9-11 01:06
你这个迷宫根本就都不起来呀,至于你说的打印两遍,把scanf("%c",&direction);,%c前面加一个空格
就好了,还有你遍历数组的时候,没发现少些点什么吗??
下次代码写完整了,在发
作者: Mr.Qing    时间: 2014-9-11 14:10
小月格子猫 发表于 2014-9-11 01:06
你这个迷宫根本就都不起来呀,至于你说的打印两遍,把scanf("%c",&direction);,%c前面加一个空格
就好了 ...

这个我知道了  请大神指点我少了什么 我运行正常啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2