java基础(javaBase)推箱子,课程总结

推箱子总结:

1.遇到的问题,与解决办法

  • 最后一步,设置箱子的位置与目的地位置重合,原理是让map地图重新加载一遍,再退出
  • 2、重新开始游戏,原理就是在循环外面定义一个do-while循环,注意,一个break只在一个while循环中起作用,之前误认为,一个break就能把所有的while或者for循环停止,其实不然。
  • 3、提到了for循环,这里再次回复一下,for循环中的break、return、continue,的作用

①、continue:指的是跳出当前循环,即不执行continue后的语句,直接进入下次循环。

②、break:指的是跳出for循环本身,不再进行之后的循环,但可以执行for循环之外的语句。

③、return:指的是跳出for循环,且不执行for循环之外的语句,直接跳出当前函数,返回return后的值

  • 4、就是在推箱子这个项目中,boolean值的定义非常关键

第一个Boolean

// 3、判断人与箱子相遇的情况,人穿过箱子,先覆盖箱子,然后再出现
// 解释:a[rx - 1][ry] == 3 人的前面是一个箱子,人向上走一步,先让flag变成true,然后对箱子、和人移动的位置进行处理
                    if (flag) {
                        a[rx][ry] = 3;
                        flag = false;
                        rx--;
                        a[rx][ry] = 1;
                        continue;
                    }
                    if (a[rx - 1][ry] == 3) {
                        flag = true;
                    }
//            重新开始
// 解释:重新判定,游戏结束后,是否继续游戏,同时还有一个Game,是do-while循环中的判断,具体内容看下面的源码
                if(temp) {
                    temp = false;
                    System.out.println("恭喜你,通关成功!");
                    System.out.println("是否继续游戏:(yes/no)");
                    answer =  mys.next();
                    if(answer.equals("yes")) {
                        Game = true;
                        break;
                    }
                    else {
                        Game=false;
                        break;
                    }
                }
  • 5、感悟,本人正在学习java,偶尔分享一下自己的学习小项目,也是第一次在掘金中写博客,有很多不足,还在继续学习中 ……
  • 6 源代码,只写了随机生成人、箱子、目的地的点位,循环重新开始 功能,感兴趣的小伙伴可以继续开发~~~
import java.util.Random;
import java.util.Scanner;

public class PushCase {
    public static void main(String[] args) {
//        引用随机生成数据,先把基本的布局弄一遍再过来改
//        功能:生成随机位置
//        边框:看可不可以
//        是否重新开始、悔棋步骤
//        今晚的任务:写一篇总结,抄好笔记
//         判断是否继续游戏
        String answer="";
        boolean Game = false;
        do {
            Random myr = new Random();
            Scanner mys = new Scanner(System.in);
//        地图
            int[][] a = new int[9][9];
            boolean flag = false;
            boolean temp = false;
//        人:1、箱子:2、目标:3
            int rx = myr.nextInt(a.length-1);
            int ry = myr.nextInt(a.length-1);
            int xx = myr.nextInt(a.length-1);
            int xy = myr.nextInt(a.length-1);
            int dx = myr.nextInt(a.length-1);
            int dy = myr.nextInt((a.length-1));
            if(xx==0||xy==0||dx==0||dy==0) {
                Game =true;
                continue;
            }
            a[rx][ry] = 1;
            a[xx][xy] = 2;
            a[dx][dy] = 3;
            while (true) {

                for (int i = 0; i < a.length; i++) {
                    for (int j = 0; j < a.length; j++) {
                        if(a[i][j] == 0) {
                            System.out.print("口");
                        }
                        if (a[i][j] == 1 ) {
                            System.out.print("囚");
                        }
                        if (a[i][j] == 2 ) {
                            System.out.print("箱");
                        }
                        if (a[i][j] == 3) {
                            System.out.print("地");
                        }
                    }
                    System.out.println();
                }
//            重新开始
                if(temp) {
                    temp = false;
                    System.out.println("恭喜你,通关成功!");
                    System.out.println("是否继续游戏:(yes/no)");
                    answer =  mys.next();
                    if(answer.equals("yes")) {
                        Game = true;
                        break;
                    }
                    else {
                        System.out.println("敲代码还是文哥最帅!");
                        System.out.println("敲代码还是文哥最帅!");
                        System.out.println("敲代码还是文哥最帅!");
                        Game=false;
                        break;
                    }
                }
//          能上下左右推动箱子
                System.out.println("请输入要移动的方向:(w上,x下,a左,d右)");
                String x = mys.next();
//            游戏结束条件,暂时这个不太行,后面箱子的值,会先覆盖盒子的值,这个判断不了
//            if(a[xx][xy]==a[dx][dy]) {
//                System.out.println("恭喜你,通关,游戏结束!");
//                break;
//            }
//            上
                if (x.equals("w")) {
//          1、判断箱子是否在墙边上
                    if (rx - 1 < 0) {
                        System.out.println("再上就穿墙了,小伙子不能开挂昂!");
                        continue;
                    }
//            2、判断人推箱子的情况
                    if (a[rx - 1][ry] == 2) {
                        if (rx - 2 < 0) {
                            System.out.println("再上箱子要撞墙了!");
                            continue;
                        }
                        if (a[rx - 2][ry] == 3) {
                            temp = true;
                        }
                        a[rx - 2][ry] = 2;
                    }
//                3、判断人与箱子相遇的情况,人穿过箱子,先覆盖箱子,然后再出现
                    if (flag) {
                        a[rx][ry] = 3;
                        flag = false;
                        rx--;
                        a[rx][ry] = 1;
                        continue;
                    }
                    if (a[rx - 1][ry] == 3) {
                        flag = true;
                    }
                    a[rx][ry] = 0;
                    rx--;
                    a[rx][ry] = 1;
                }
//            下
                if (x.equals("s")) {
//          1、判断箱子是否在墙边上
                    if (rx + 1 == a.length) {
                        System.out.println("再上就穿墙了,小伙子不能开挂昂!");
                        continue;
                    }
//            2、判断人推箱子的情况
                    if (a[rx + 1][ry] == 2) {
                        if (rx + 2 == a.length) {
                            System.out.println("再上箱子要撞墙了!");
                            continue;
                        }
                        if (a[rx + 2][ry] == 3) {
                            temp = true;
                        }
                        a[rx + 2][ry] = 2;
                    }
//                3、判断人与箱子相遇的情况,人穿过箱子,先覆盖箱子,然后再出现
                    if (flag) {
                        a[rx][ry] = 3;
                        flag = false;
                        rx++;
                        a[rx][ry] = 1;
                        continue;
                    }
                    if (a[rx + 1][ry] == 3) {
                        flag = true;
                    }
                    a[rx][ry] = 0;
                    rx++;
                    a[rx][ry] = 1;
//                if(temp) {
//                    break;
//                }
                }
//            左
                if (x.equals("a")) {
//          1、判断箱子是否在墙边上
                    if (ry - 1 < 0) {
                        System.out.println("再上就穿墙了,小伙子不能开挂昂!");
                        continue;
                    }
//            2、判断人推箱子的情况
                    if (a[rx][ry - 1] == 2) {
                        if (ry - 2 < 0) {
                            System.out.println("再上箱子要撞墙了!");
                            continue;
                        }
                        if (a[rx][ry - 2] == 3) {
                            temp = true;
                        }
                        a[rx][ry - 2] = 2;
                    }
//                3、判断人与箱子相遇的情况,人穿过箱子,先覆盖箱子,然后再出现
                    if (flag) {
                        a[rx][ry] = 3;
                        flag = false;
                        ry--;
                        a[rx][ry] = 1;
                        continue;
                    }
                    if (a[rx][ry - 1] == 3) {
                        flag = true;
                    }
                    a[rx][ry] = 0;
                    ry--;
                    a[rx][ry] = 1;
//                if(temp) {
//                    break;
//                }
                }
//            右
                if (x.equals("d")) {
//          1、判断箱子是否在墙边上
                    if (ry + 1 == a.length) {
                        System.out.println("再上就穿墙了,小伙子不能开挂昂!");
                        continue;
                    }
//            2、判断人推箱子的情况
                    if (a[rx][ry + 1] == 2) {
                        if (ry + 2 == a.length) {
                            System.out.println("再上箱子要撞墙了!");
                            continue;
                        }
                        if (a[rx][ry + 2] == 3) {
                            temp = true;
                        }
                        a[rx][ry + 2] = 2;
                    }
//                3、判断人与箱子相遇的情况,人穿过箱子,先覆盖箱子,然后再出现
                    if (flag) {
                        a[rx][ry] = 3;
                        flag = false;
                        ry++;
                        a[rx][ry] = 1;
                        continue;
                    }
                    if (a[rx][ry + 1] == 3) {
                        flag = true;
                    }
                    a[rx][ry] = 0;
                    ry++;
                    a[rx][ry] = 1;
                }
            }
        } while(Game);
    }
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值