黑马程序员技术交流社区

标题: 这个函数迷宫 哪位大师 还可以帮我改进一下 [打印本页]

作者: 企业部-Mr.王    时间: 2015-9-5 23:00
标题: 这个函数迷宫 哪位大师 还可以帮我改进一下
#include <stdio.h>
#define ROW 6
#define COL 8  //有个问题,这个是7就不行,

void print_map(char map[ROW][COL]){

    for (int i=0; i<ROW; i++) {
        printf("%s\n",map[i]);
    }
}
void personMove(char map[ROW][COL],int oldX,int oldY,int newX,int newY){

    int temp = map[oldX][oldY];
    map[oldX][oldY] = map[newX][newY];
    map[newX][newY] = temp;
}
int main(int argc, const char * argv[]) {
   
    char map[ROW][COL]={
        "#######",
        "#O##   ",
        "# ## ##",
        "#  # ##",
        "##   ##",
        "#######"};
    print_map(map);
    int playerX = 1,playerY = 1;
    char  direction;
    char ch;
    printf("请输入小人移动方向:w.上 s.下 a.左 d.右\n");
    while (1) {
        scanf("%c",&direction);
        scanf("%c",&ch);
        switch (direction) {
            case 'w':
            case 'W':
                if(map[playerX-1][playerY] == ' '){
                personMove(map, playerX, playerY, playerX-1, playerY);
                    playerX--;
                }
                break;
            case 's':
            case 'S':
                if(map[playerX+1][playerY] == ' '){
                personMove(map, playerX, playerY, playerX+1, playerY);
                playerX++;
                }
                break;
            case 'a':
            case 'A':
                if(map[playerX][playerY-1] == ' '){
                personMove(map, playerX, playerY, playerX, playerY-1);
                playerY--;
                }
                break;
            case 'd':
            case 'D':
                if(map[playerX][playerY+1] == ' '){
                personMove(map, playerX, playerY, playerX, playerY+1);
                playerY++;
                }
                break;
            case 'q':
                return 0;
                default:
                break;
        }
        print_map(map);
        if (playerY == 6) {
            printf("恭喜,您赢了!!!\n");
            break;
        }
    }
    return 0;
}

作者: bling的女汉子    时间: 2015-9-5 23:05
哇塞 ,好长的代码,挺好的
作者: 企业部-Mr.王    时间: 2015-9-5 23:05
bling的女汉子 发表于 2015-9-5 23:05
哇塞 ,好长的代码,挺好的

嘿嘿  谢谢
作者: 1wang2huan    时间: 2015-9-5 23:06
二维数组存的是字符串,col是列数,不要忘记字符串末尾有一个’\0’所以一定是多一个!另外优化的话可以参考这个帖子
迷宫改进代码_函数精简版(自己打)
http://bbs.itheima.com/thread-233649-1-1.html

作者: 企业部-Mr.王    时间: 2015-9-5 23:08
1wang2huan 发表于 2015-9-5 23:06
二维数组存的是字符串,col是列数,不要忘记字符串末尾有一个’\0’所以一定是多一个!另外优化的话可以参考这 ...

谢谢啊......
作者: 企业部-阿狗老师    时间: 2015-9-6 12:27
好的好的 我知道了!




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