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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 huanglinwang 于 2016-5-16 22:52 编辑

#include<stdio.h>
#define X 7
#define Y 7

void PrintMap(char Map[X][Y]){
    for(int i=0;i<X;i++){
        for(int j=0;j<Y;j++){
            printf("%c",Map[j]);
        }
        printf("\n");
    }
}
void Move(char Map[X][Y],int Oldx,int Oldy,int Newx,int Newy){
    char a;
    if(Map[Newx][Newy] == ' '){
        a = Map[Oldx][Oldy];
        Map[Oldx][Oldy] = Map[Newx][Newy];
        Map[Newx][Newy] =  a;
    }
}
int main(){
    //定义地图
    char Map[X][Y] = {
        {'*','*','*','*','*','*','*'},
        {'*','0','*',' ',' ',' ','*'},
        {'*',' ','*',' ','*',' ','*'},
        {'*',' ','*',' ','*',' ','*'},
        {'*',' ','*',' ','*',' ','*'},
        {'*',' ',' ',' ','*',' ',' '},
        {'*','*','*','*','*','*','*'}
    };
    //打印一遍地图
    PrintMap(Map);
    //定义小人的坐标
    int x = 1;
    int y = 1;
    //定义一个字符用来存储路用来和小人交换位置
//    char a;
    //用来接收用户输入的命令
    char c;
    //告诉用户游戏规则
    //利用while循环
    while(1){
    //提醒用户输入
    // 定义变量接受用户输入
        scanf("%c",&c);
    //  getchar();
    //判断用户输入的数据利用switch
        switch(c){
            case 'w':
            case 'W':
                // 利用if判断是否是路,是路则进行交换
                Move(Map,x,y,x-1,y);
                x--;
                break;
            case 's':
            case 'S':
                Move(Map,x,y,x+1,y);
                x++;
                break;
            case 'a':
            case 'A':
                Move(Map,x,y,x,y-1);
                y--;
                break;
            case 'd':
            case 'D':
                Move(Map,x,y,x,y+1);
                y++;
                break;
            case 'q':
            case 'Q':
                return 0;
            default:
                break;
        }
        PrintMap(Map);
        if(y == 6){
            printf("恭喜你通关了!");
            return 0;
        }
    }
    return 0;
}





2 个回复

倒序浏览
六六六六
回复 使用道具 举报
迷宫这题没去研究
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马