Java推箱子小游戏

       推箱子概念

         /*
         * 模拟:一个人物、一个箱子、一个终点
         */
        //打印10*10地图

推箱子代码

    public static void main(String[] args) {
        //创建地图
        String[][] dt = new String[10][10];
        for (int i = 0; i < dt.length; i++) {
            for (int j = 0; j < dt[i].length; j++) {
                dt[i][j] = "*";
            }
        }        
                
        //创建人物的随机坐标
        Random ran = new Random();
        int rI = ran.nextInt(10);
        int rJ = ran.nextInt(10);
                        
        //把人物放到地图上
        dt[rI][rJ] = "☃";
                                
                        
        //创建随机箱子的坐标
        int xzI = ran.nextInt(10);
        int xzJ = ran.nextInt(10);
        while(true) {//循环判断箱子坐标和人坐标是否相等
        if(rI!=xzI && rJ!=xzJ) {//如果坐标不相等就赋值箱子然后退出循环
            dt[xzI][xzJ] = "■";
            break;
        }
        }
                        
        //创建终点坐标
        int zdI = ran.nextInt(10);
        int zdJ = ran.nextInt(10);
        while(true) {
            //终点坐标不能和人坐标箱子坐标重叠
            if(zdI!=rI && zdI!=xzI && zdJ!=rJ && zdJ!=xzJ) {
                //循环判断不等于人的坐标和箱子的坐标就赋值终点然后退出
                dt[zdI][zdJ] = "◎";
                break;
            }
        }
        
        //打印地图
        for (int i = 0; i < dt.length; i++) {
            for (int j = 0; j < dt[i].length; j++) {
            System.out.print(dt[i][j]+"  ");
        }
            System.out.println();
        }    
                
        //让人物移动
        while(true) {
        System.out.println("请移动:");
        System.out.println("W:↑\tS:↓\tA:←\tD:→");
        //创建一个扫描器
        Scanner sc = new Scanner(System.in);    
        String yd = sc.next();
        if(yd.equals("w")){
            System.out.println("上");                
            dt[rI][rJ] = "*";
            if(rI>0) {
                rI = rI-1;
                if(rI==xzI && rJ==xzJ && xzI>=0) {
                    xzI = xzI-1;
                    dt[xzI][xzJ] = "■";
                    }
            }
            dt[rI][rJ] = "☃";
            
            //打印地图
            for (int i = 0; i < dt.length; i++) {
                for (int j = 0; j < dt[i].length; j++) {
                System.out.print(dt[i][j]+"  ");
            }
                System.out.println();
            }    
        
        }else if(yd.equals("s")) {
            System.out.println("下");
            dt[rI][rJ] = "*";
            if(rI<9) {
                rI = rI+1;
                if(rI==xzI && rJ==xzJ && xzI<9) {
                    xzI = xzI+1;
                    dt[xzI][xzJ] = "■";
                    }
            }
            dt[rI][rJ] = "☃";
            //打印地图
            for (int i = 0; i < dt.length; i++) {
                for (int j = 0; j < dt[i].length; j++) {
                System.out.print(dt[i][j]+"  ");
            }
                System.out.println();
            }    
            
        }else if(yd.equals("a")) {
            System.out.println("左");
            dt[rI][rJ] = "*";
            if(rJ>0) {
                rJ = rJ-1;
                if(rI==xzI && rJ==xzJ && xzI>=0) {
                    xzJ = xzJ-1;
                    dt[xzI][xzJ] = "■";
                    }
            }
            dt[rI][rJ] = "☃";
            //打印地图
            for (int i = 0; i < dt.length; i++) {
                for (int j = 0; j < dt[i].length; j++) {
                System.out.print(dt[i][j]+"  ");
            }
                System.out.println();
            }    
        }else if(yd.equals("d")) {
            System.out.println("右");
            dt[rI][rJ] = "*";
            if(rJ<9) {
                rJ = rJ+1;
                if(rI==xzI && rJ==xzJ && xzI<9) {
                    xzJ = xzJ+1;
                    dt[xzI][xzJ] = "■";
                    }
            }
            dt[rI][rJ] = "☃";
            //打印地图
            for (int i = 0; i < dt.length; i++) {
                for (int j = 0; j < dt[i].length; j++) {
                System.out.print(dt[i][j]+"  ");
            }
                System.out.println();
            }    
        }
        if(xzI==zdI && xzJ==zdJ) {
            System.out.println("恭喜胜利");
            break;
        }
    }    
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值