迷宫代码实现 --- 详细解说每一步

char ch = '0';
    char map[10][10] =
    {
        //10行10列的数组地图
        {'#','#','#','#','#','#','#','#','#','#'},//0
        {'#','0',' ',' ',' ','#',' ','#',' ',' '},//1
        {'#','#',' ','#','#','#',' ','#',' ','#'},//2
        {'#','#',' ',' ',' ',' ',' ','#',' ','#'},//3
        {'#','#','#',' ','#','#',' ','#',' ','#'},//4
        {'#',' ','#',' ',' ','#',' ','#',' ','#'},//5
        {'#',' ','#',' ',' ','#',' ','#',' ','#'},//6
        {'#',' ','#',' ',' ','#',' ','#',' ','#'},//7
        {'#',' ',' ',' ',' ','#',' ',' ',' ','#'},//8
        {'#','#','#','#','#','#','#','#','#','#'},//9
        //0   1   2   3   4   5   6   7   8   9
    };
    int row = 1;
    int coloumn = 1;
    while (row != 1 || coloumn != 9) {
        //打印迷宫
        for (int i = 0; i < 10; i ++) {
            for (int j = 0; j < 10; j++) {
                printf("%c", map[i][j]);
            }
            printf("\n");
        }
        //提示
        printf("请输入wsad上下左右控制方向\n");
        //接受用户输入的字符
        scanf("\n%c", &ch);
        //判断字符
        switch (ch) {
            case 'w'://上
                if (map[row - 1][coloumn] != '#') {//判断下一步是否能走
                    map[row][coloumn] = ' ';//如果能走将现有位置置空
                    map[row - 1][coloumn] = '0';//将下一位置置零,表示现在所在位置
                    row--;//原先位置的横坐标变化得到当前位置的横坐标
                }
                break;
            case 's'://下
                if (map[row + 1][coloumn] != '#') {//判断下一步是否能走
                    map[row][coloumn] = ' ';//如果能走将现有位置置空
                    map[row + 1][coloumn] = '0';//将下一位置置零,表示现在所在位置
                    row++;//原先位置的横坐标变化得到当前位置的横坐标
                }
                break;
            case 'a'://左
                if (map[row][coloumn - 1] != '#') {//判断下一步是否能走
                    map[row][coloumn] = ' ';//如果能走将现有位置置空
                    map[row][coloumn - 1] = '0';//将下一位置置零,表示现在所在位置
                    coloumn--;//原先位置的纵坐标变化得到当前位置的纵坐标
                }
                break;
            case 'd'://右
                if (map[row][coloumn + 1] != '#') {//判断下一步是否能走
                    map[row][coloumn] = ' ';//如果能走将现有位置置空
                    map[row][coloumn + 1] = '0';//将下一位置置零,表示现在所在位置
                    coloumn++;//原先位置的纵坐标变化得到当前位置的纵坐标
                }
                break;
                
            default:
                printf("请按提示输入字符控制方向\n");//输入错误提醒
                break;
        }
    }
    //走出迷宫
    printf("恭喜你走出了迷宫\n");

你可能感兴趣的:(迷宫代码实现 --- 详细解说每一步)