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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#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){
                如果走出则给出

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马