#include <stdio.h>  
#define ROW 6  
#define COL 6  
 
int main(int argc, const char * argv[]) {  
 
//1、定义变量  
char map[ROW][COL]={  
        {'#','#','#','#','#','#'},  
        {'#','O','#','#',' ',' '},  
        {'#',' ','#','#',' ','#'},  
        {'#',' ',' ','#',' ','#'},  
        {'#','#',' ',' ',' ','#'},  
        {'#','#','#','#','#','#'}  
};  
        //定义变量,保存用户输入的方向  
        char direction; 
        //定义路的字符 
        char street=' ';  
        //定义小人当前的位置  
        int currentX=1;  
        int currentY=1;  
 
//2、初始化地图  
        for(int i=0;i<ROW;i++){ 
                for (int j=0; j<COL; j++) {  
                printf("%c",map[i][j]);  
                }  
                printf("\n");  
        }  
         
//3、提示游戏玩法  
        printf("请控制小人移动:w.上 s.下 a.左 d.右 q.退出\n");  
         
//4、编写循环控制程序  
        char ch; //用于吸收字符  
        while (1) {  
 
//5、获取用户输入的方向数据 
        scanf("%c",&direction);  
        scanf("%c",&ch);  
 
//6、根据数据方向判断小人移动  
        switch (direction) {  
                case 'w':  
                case 'W':  
                // 1)判断小人将要移动的位置是否是路  
                if (map[currentX-1][currentY]==street) {  
                        如果是路,则移动小人  
                        char temp;  
                        移动小人的方法:(1)让小人当前的位置和小人将要移动的位置交换  
                        temp = map[currentX][currentY];  
                        map[currentX][currentY] = map[currentX-1][currentY]; map[currentX-1][currentY] = temp;  
                        移动小人后,重新调整小人位置 
currentX--;  
                }  
                break; 
                case 's':  
                case 'S': 
                // 1)判断小人将要移动的位置是否是路  
                        if (map[currentX+1][currentY]==street) {  
                        //  如果是路,则移动小人  
                                char temp;  
                        //  移动小人的方法:(1)让小人当前的位置和小人将要移动的位置交换  
                                temp = map[currentX][currentY];  
                                map[currentX][currentY] = map[currentX+1][currentY]; map[currentX+1][currentY] = temp;  
                                移动小人后,重新调整小人位置  
                                currentX++;  
                        }  
                        break; 
                case 'a':  
                case 'A': 
                // 1)判断小人将要移动的位置是否是路  
                        if (map[currentX][currentY-1]==street) {  
                        //  如果是路,则移动小人  
                                char temp;  
                        //  移动小人的方法:(1)让小人当前的位置和小人将要移动的位置交换  
                                temp = map[currentX][currentY];  
                                map[currentX][currentY] = map[currentX][currentY-1]; map[currentX][currentY-1] = temp;  
                                移动小人后,重新调整小人位置  
                                currentY--;  
                        }  
                        break; 
                case 'd':  
                case 'D': 
                // 1)判断小人将要移动的位置是否是路  
                        if (map[currentX][currentY+1]==street) {  
                        //  如果是路,则移动小人  
                                char temp;  
                        //  移动小人的方法:(1)让小人当前的位置和小人将要移动的位置交换  
                                temp = map[currentX][currentY];  
                                map[currentX][currentY] = map[currentX][currentY+1]; map[currentX][currentY+1] = temp;   
                                移动小人后,重新调整小人位置  
                                currentY++ ;  
                        }  
                        break; 
//7、重绘地图 
        for(int i=0;i<ROW;i++){  
                for (int j=0; j<COL; j++) {  
                        printf("%c",map[i][j]);  
                }  
                printf("\n");  
        }  
 
//8、判断是否走出迷宫  
                if(currentY==5){  
                如果走出则给出 |   
        
 
    
    
    
     
 
 |