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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 嗨灬小凯 中级黑马   /  2015-4-27 16:27  /  1054 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include <stdio.h>
#define ROW 6
#define COL 6

// 打印迷宫
void printMap(char (*array)[COL], int rows, int cols) {
    for(int i = 0; i < rows; i++) {
        for(int j = 0; j < cols; j++) {
            printf("%c", array[i][j]);
        }
        printf("\n");
    }
}


int main(int argc, const char * argv[]) {
   
    /*
        while(1) {
     
            打印界面
            判断是否走出迷宫,跳出循环
            提示使用户输入
            判断用户输入,并修改人物的位子
            // 怎么让人移动的?
            // 所谓的移动就是将位置交换
            // 怎么判断上下左右呢
            // 如果输入的是w就表示i-1
            // 如果输入的是s就表示i+1
            // ...
     
        }
     */
   
    char map[ROW][COL]={
        {'#','#','#','#','#','#'},
        {'#','O','#','#',' ',' '},
        {'#',' ','#','#',' ','#'},
        {'#',' ',' ','#',' ','#'},
        {'#','#',' ',' ',' ','#'},
        {'#','#','#','#','#','#'}
    };
   
    char ch, temp;
    int i = 1, j = 1;
   

    while (1) {
        // 清屏
        system("clear"); // 调用系统的函数,指向shell
        
        
        // 打印迷宫
        printMap(map, ROW, COL);
        
        // 胜利的判断
        // i == 0 或 i == cols - 1
        // j == 0 或 j == rows - 1
        if(i == 0 || i == COL - 1 || j == 0 || j == ROW - 1) {
            printf("恭喜,你越狱成功!\n");
            break;
        }
        
        
        // 打印提示信息
        printf("请输入操作:w向上,s向下,a向左,d向右,输入完成后回车\n");
        scanf("%c", &ch);
        
        while (1) {
            scanf("%c", &temp);
            if(temp == '\n') break;
        }
        
        
        
        // 判断用户输入
        switch (ch) {
            case 'w':
            case 'W':
                // 向上
                // i - 1
                // 判断下一步即map[i-1][j]是否为#或' '
                // if(... == ' ') 交换
                if(map[i - 1][j] == ' ') {
                    temp = map[i][j];
                    map[i][j] = map[i-1][j];
                    map[i-1][j] = temp;
                    i--;
                }
               
                break;
            case 's':
            case 'S':
                if(map[i + 1][j] == ' ') {
                    temp = map[i][j];
                    map[i][j] = map[i+1][j];
                    map[i+1][j] = temp;
                    i++;
                }
               
                break;
            case 'a':
            case 'A':
                if(map[i][j-1] == ' ') {
                    temp = map[i][j];
                    map[i][j] = map[i][j-1];
                    map[i][j-1] = temp;
                    j--;
                }
                break;
            case 'd':
            case 'D':
                if(map[i][j+1] == ' ') {
                    temp = map[i][j];
                    map[i][j] = map[i][j+1];
                    map[i][j+1] = temp;
                    j++;
                }
                break;
        }
        
    }
   
   
   
    return 0;
}

1 个回复

倒序浏览
很好玩的样子,拿走代码复制跑一下
还有这个是楼主自己写的还是在别的地方找来学习的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马