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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© marsfan 中级黑马   /  2016-9-23 23:11  /  918 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.Scanner;
public class 走迷宫 {
        public static void main(String[] args) {
                //创建键盘录入事件;
                Scanner in = new Scanner(System.in);
                /*
                 迷宫地图格式;
                 31********
                 *11111****
                 *1***1****
                 *11111****
                 ***1******
                 
                 *号代表障碍  1 代表能走的路  3 代表你的游戏人物
                  */
                // 定义人物的初始位置;
                int x = 0;
                int y = 0;
                //第一步创建迷宫地图;
                int[][] map ={
                                {1,1,0,0,0,0,0,0,0,0},
                                {0,1,1,1,1,1,0,0,0,0},
                                {0,1,0,0,0,1,0,0,0,0},
                                {0,1,1,1,1,1,0,0,0,0},
                                {0,0,0,1,0,0,0,0,0,0}
                };
                map[x][y] = 3;//将人物放在地图的第一个位置
                //第二步显示迷宫地图;
                showMap(map);
                //----------------地图绘制完成------------------------
                // 实现人物在迷宫中的移动
                while(true){
                        System.out.println("w往上走 s往下走 a往左走 d往右走");
                        String move = in.nextLine();
                        if(move.equals("w")&&x>=1&&map[x-1][y]!=0){//往上走 并且 排除越界情况
                                x--;                   //人物的坐标发生变化;
                                map[x+1][y]=1;//将上一步还原;
                        }else if(move.equals("s")&&x<map.length-1&&map[x+1][y]!=0){//往下走 并且 排除越界情况
                                x++;                   //人物的坐标发生变化;
                                map[x-1][y]=1;//将上一步还原;
                        }else if(move.equals("a")&&y>=1&&map[x][y-1]!=0){//往左走 并且 排除越界情况
                                y--;                        //人物的坐标发生变化;
                                map[x][y+1]=1;//将上一步还原;
                        }else if(move.equals("d")&&y<map[x].length-1&&map[x][y+1]!=0){//往右走 并且 排除越界情况
                                y++;                        //人物的坐标发生变化;
                                map[x][y-1]=1;//将上一步还原;
                        }
                        map[x][y] = 3;
                        showMap(map);
                }
        }

        private static void showMap(int[][] map) {
                for(int i = 0; i <map.length;i++){
                        for(int j = 0; j <map[i].length;j++){
                                if(map[i][j] == 0){ // 打印迷宫的墙壁
                                        System.out.print("*");
                                }else if(map[i][j] == 1){// 打印迷宫的道路
                                        System.out.print(" ");
                                }else if(map[i][j] == 3){// 打印迷宫的人物
                                        System.out.print("1");
                                }
                        }
                        System.out.println();//换行;
                }
        }
}

0 个回复

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