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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵云18235802528 中级黑马   /  2015-6-28 07:46  /  603 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*

char map[ROW][COL]={
{'#','#','#','#','#','#'},     //'#'代表墙  '0'代表人   ' '代表路
{' ','O','#','#',' ',' '},
{'#',' ','#','#',' ','#'},
{'#',' ',' ','#',' ','#'},
{'#','#',' ',' ',' ','#'},
{'#','#','#','#','#','#'}
};

*/

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

int main(){

char map[ROW][COL]={
{'#','#','#','#','#','#'},
{'0',' ','#','#',' ',' '},
{'#',' ','#','#',' ','#'},
{'#',' ',' ','#',' ','#'},
{'#','#',' ',' ',' ','#'},
{'#','#','#','#','#','#'}
    };

    //打印地图
    for (int i=0; i<ROW;i++ ) {
        for (int j=0; j<COL;j++) {
            printf("%c",map[j]);
        }
        printf("\n");
    }
    //定义变量
    char direction;

    char street=' ';
    int x=1,y=0;//向下代表x的正方向,向右代表y轴的正方向
    //提示用户输入向上w 向下s 向左a 向右d
    printf("请用户输入方向键,向上 w,向下 s 向左a 向右d 退出 q");
    char ch;
    //*******循环控制********
    while(1){
        scanf("%c",&direction);
        scanf("%c",&ch);

    char temp;
    switch(direction){
        case 'w':
        case 'W':
            //判断小人移动是否等于路
            if (map[x-1][y]==street) {
                temp=map[x][y];
                map[x][y]=map[x-1][y];
                map[x-1][y]=temp;
                //重新记录小人的位置
                x--;
                break;
            }
        case 's':
        case 'S':
            //判断小人移动是否等于路
            if (map[x+1][y]==street) {
                temp=map[x][y];
                map[x][y]=map[x+1][y];
                map[x+1][y]=temp;
                //重新记录小人的位置
                x++;
                break;
            }


        case 'a':
        case 'A':
            //判断小人移动是否等于路
            if (map[x][y-1]==street) {
                temp=map[x][y];
                map[x][y]=map[x][y-1];
                map[x][y-1]=temp;
                //重新记录小人的位置y
                y--;
                break;
            }

        case 'd':
        case 'D':
            //判断小人移动是否等于路
            if (map[x][y+1]==street) {
                temp=map[x][y];
                map[x][y]=map[x][y+1];
                map[x][y+1]=temp;
                //重新记录小人的位置
                y++;
                break;
            }

        case 'q':
            return 0;
            break;

    }
    for (int i=0; i<ROW; i++) {
        for (int j=0; j<COL; j++) {
            printf("%c",map[j]);
        }
        printf("\n");
    }
    if (y==5) {
        printf("哇哦,你出来了!\n");

    }
    }


    return 0;

}

0 个回复

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