java 推箱子 两个箱子 两个位置 ,练习java二维数组

package com.lanou.homework;

import java.util.Scanner;

public class Homework_TuiXiangZi1 {

    @SuppressWarnings("resource")
    public static void main(String[] args) {

        /*
         * 首先, 我们创建出来小人可以移动的地图--->这个地图是一个二维数组
         **/
        int[][] map = new int[5][5];

        /*
         * 接下来,我希望从输入确定我的小人的初始位置
         */
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入小人初始位置的行坐标从 0 到 " + (map.length - 1));
        int m = scanner.nextInt(); // 小人的行坐标
        if (m > map.length - 1 || m < 0) {
            System.out.println("您输入的行数有误,小人坐标脱离了地图!!");
            return;
        }
        System.out.println("请输入小人初始位置的列坐标从 0 到 " + (map[m].length - 1));
        int n = scanner.nextInt(); // 小人的列坐标!!
        if (n > map[m].length - 1 || n < 0) {
            System.out.println("您输入的列数有误,小人坐标脱离了地图");
            return;
        }

        map[m][n] = 1; // 给小人赋值

        /*
         * 关于箱子1的逻辑判断
         */

        System.out.println("请输入箱子1的行坐标,从0 到" + (map.length - 1));
        int boxM = scanner.nextInt();
        if (boxM >= map.length || boxM < 0) {
            System.out.println("箱子1已经脱离地图");
            return;
        }
        System.out.println("请输入箱子1的列坐标,从0 到 " + (map[boxM].length - 1));
        int boxN = scanner.nextInt();
        if (boxN >= map[boxM].length || boxN < 0) {
            System.out.println("箱子1已经脱离地图了");
            return;
        }
        if (boxM == m && boxN == n) {
            System.out.println("此处小人已经占了,请另寻他处!");
            return;
        }
        map[boxM][boxN] = 2;// 给箱子所在的位置赋值

        /*
         * 关于箱子二的逻辑判断
         */

        System.out.println("请输入箱子2的行坐标,从0 到" + (map.length - 1));
        int boxM1 = scanner.nextInt();
        if (boxM1 >= map.length || boxM1 < 0) {
            System.out.println("箱子1已经脱离地图");
            return;
        }
        System.out.println("请输入箱子1的列坐标,从0 到 " + (map[boxM].length - 1));
        int boxN1 = scanner.nextInt();
        if (boxN1 >= map[boxM1].length || boxN1 < 0) {
            System.out.println("箱子1已经脱离地图了");
            return;
        }
        if (boxM1 == m && boxN1 == n) {
            System.out.println("此处小人已经占了,请另寻他处!");
            return;
        } else if (boxM1 == boxM && boxN1 == boxN) {
            System.out.println("此处箱子已经占了!");
        }

        map[boxM1][boxN1] = 2;// 给箱子所在的位置赋值

        /*
         * 关于箱子目的地1的逻辑判断
         *
         */

        System.out.println("请输入箱子空的行坐标,从0 到" + (map.length - 1));
        int boxK = scanner.nextInt();
        if (boxK >= map.length || boxK < 0) {
            System.out.println("箱子空 已经脱离地图了");
            return;
        }
        System.out.println("请输入箱子空的列坐标,从0 到" + (map[boxK].length - 1));
        int boxL = scanner.nextInt();
        if (boxL >= map[boxK].length || boxL < 0) {
            System.out.println("箱子空 已经脱离地图了");
        }
        map[boxK][boxL] = 3;// 给箱子空(相当于给箱子所要推送的位置)赋值

        if (boxK == m && boxL == n) {
            map[m][n] = 4;
        } else if ((boxK == boxM && boxL == boxM) || (boxK == boxM1 && boxL == boxN1)) {
            map[boxK][boxK] = 5;
        }

        /*
         * 关于箱子目的地2的逻辑判断
         *
         */

        System.out.println("请输入箱子空的行坐标,从0 到" + (map.length - 1));
        int boxK1 = scanner.nextInt();
        if (boxK1 >= map.length || boxK1 < 0) {
            System.out.println("箱子空 已经脱离地图了");
            return;
        }
        System.out.println("请输入箱子空的列坐标,从0 到" + (map[boxK1].length - 1));
        int boxL1 = scanner.nextInt();
        if (boxL1 >= map[boxK1].length || boxL1 < 0) {
            System.out.println("箱子空 已经脱离地图了");
        }
        map[boxK1][boxL1] = 3;// 给箱子空(相当于给箱子所要推送的位置)赋值

        if (boxK1 == m && boxL1 == n) {
            map[m][n] = 4;
        } else if ((boxK1 == boxM && boxL1 == boxM) || (boxK1 == boxM1 && boxL1 == boxN1)) {
            map[boxK1][boxL1] = 5;
        }

        /*-----------------创建地图并赋值结束--------------------*/

        /*
         * 检查地图是否有误
         */
        if (map[boxK][boxL] == 5 && map[boxK1][boxL1] == 5) {
            System.out.println("您设置的地图有误请重新设置!!!");

            return;
        }

        /*
         * 我们检查一下目前的地图和小人
         */
        System.out.println("小地图目前状态如下:");
        System.out.println("-------------------------------");
        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map[i].length; j++) {
                System.out.print(map[i][j] + "\t");
            }
            System.out.println();
        }
        /*-------------------检查地图结束----------------------*/

        /*
         * 小人行走的逻辑
         */
        while (true) {
            System.out.println("请输入小人行走的方向: W 上 , A:左 , S: 下 , D:右");
            String commend = scanner.next();
            commend.toUpperCase();
            switch (commend) {

            case "W":
                // 这里让小人向上移动
                if (m == 0) {
                    System.out.println("小人已经到最上面了不能再走了!");
                } else {

                    if (map[m][n] == 4) {
                        if (map[m - 1][n] == 2) {

                            if (m - 1 == 0) {
                                System.out.println("箱子已经到顶了,请重新选择方向!");
                            } else {

                                if (map[m - 2][n] == 2) {
                                    System.out.println("上面还有一个箱子,请重新选择方向!");
                                } else if (map[m - 2][n] == 5) {
                                    System.out.println("上面还有一个箱子,请重新选择方向!");
                                } else if (map[m - 2][n] == 3) {
                                    map[m - 2][n] = 5;
                                    map[m][n] = 3;
                                    m = m - 1;
                                    map[m][n] = 1;
                                } else {
                                    map[m - 2][n] = 2;
                                    map[m][n] = 3;
                                    m = m - 1;
                                    map[m][n] = 1;
                                }

                            }

                        } else if (map[m - 1][n] == 5) {

                            if (m - 1 == 0) {
                                System.out.println("已经到最上面了!");
                            } else {
                                map[m - 1][n] = 3;
                                if (map[m - 2][n] == 2) {
                                    System.out.println("上面有一个箱子,请重新选择方向");
                                    break;
                                } else if (map[m - 2][n] == 3) {
                                    map[m - 2][n] = 5;
                                    map[m][n] = 3;
                                    m = m - 1;
                                    map[m][n] = 4;
                                } else {

                                    map[m - 2][n] = 2;
                                    map[m][n] = 3;
                                    m = m - 1;
                                    map[m][n] = 4;

                                }

                            }

                        } else if (map[m - 1][n] == 3) {
                            map[m][n] = 3;
                            m = m - 1;
                            map[m][n] = 4;

                        } else {

                            map[m][n] = 3;
                            m = m - 1;
                            map[m][n] = 1;

                        }
                    } else {

                        if (map[m - 1][n] == 2) {

                            if (m - 1 == 0) {
                                System.out.println("箱子已经到顶了,请重新选择方向!");
                            } else {

                                if (map[m - 2][n] == 2) {
                                    System.out.println("上面还有一个箱子,请重新选择方向!");
                                } else if (map[m - 2][n] == 5) {
                                    System.out.println("上面还有一个箱子,请重新选择方向!");
                                } else if (map[m - 2][n] == 3) {
                                    map[m - 2][n] = 5;
                                    map[m][n] = 0;
                                    m = m - 1;
                                    map[m][n] = 1;
                                } else {
                                    map[m - 2][n] = 2;
                                    map[m][n] = 0;
                                    m = m - 1;
                                    map[m][n] = 1;
                                }

                            }

                        } else if (map[m - 1][n] == 5) {

                            if (m - 1 == 0) {
                                System.out.println("已经到最上面了!");
                            } else {

                                if (map[m - 2][n] == 2) {
                                    System.out.println("上面有一个箱子,请重新选择方向");
                                    break;
                                } else if (map[m - 2][n] == 3) {
                                    map[m - 2][n] = 5;
                                    map[m][n] = 0;
                                    m = m - 1;
                                    map[m][n] = 4;
                                } else {

                                    map[m - 2][n] = 2;
                                    map[m][n] = 0;
                                    m = m - 1;
                                    map[m][n] = 4;

                                }

                            }

                        } else if (map[m - 1][n] == 3) {
                            map[m][n] = 0;
                            m = m - 1;
                            map[m][n] = 4;

                        } else {

                            map[m][n] = 0;
                            m = m - 1;
                            map[m][n] = 1;

                        }

                    }

                }

                break;

            case "A":

                if (n == 0) {
                    System.out.println("小人已经到最左面了不能再走了!");
                } else {

                    if (map[m][n] == 4) {
                        if (map[m][n - 1] == 2) {

                            if (n - 1 == 0) {
                                System.out.println("箱子已经到顶了,请重新选择方向!");
                            } else {

                                if (map[m][n - 2] == 2) {
                                    System.out.println("左面还有一个箱子,请重新选择方向!");
                                } else if (map[m][n - 2] == 5) {
                                    System.out.println("左面还有一个箱子,请重新选择方向!");
                                } else if (map[m][n - 2] == 3) {
                                    map[m][n - 2] = 5;
                                    map[m][n] = 3;
                                    n = n - 1;
                                    map[m][n] = 1;
                                } else {
                                    map[m][n - 2] = 2;
                                    map[m][n] = 3;
                                    n = n - 1;
                                    map[m][n] = 1;
                                }

                            }

                        } else if (map[m][n - 1] == 5) {

                            if (n - 1 == 0) {
                                System.out.println("已经到最上面了!");
                            } else {
                                map[m][n - 1] = 3;
                                if (map[m][n - 2] == 2) {
                                    System.out.println("上面有一个箱子,请重新选择方向");
                                    break;
                                } else if (map[m][n - 2] == 3) {
                                    map[m][n - 2] = 5;
                                    map[m][n] = 3;
                                    n = n - 1;
                                    map[m][n] = 4;
                                } else {

                                    map[m][n - 2] = 2;
                                    map[m][n] = 3;
                                    n = n - 1;
                                    map[m][n] = 4;

                                }

                            }

                        } else if (map[m][n - 1] == 3) {
                            map[m][n] = 3;
                            n = n - 1;
                            map[m][n] = 4;

                        } else {

                            map[m][n] = 3;
                            n = n - 1;
                            map[m][n] = 1;

                        }
                    } else {

                        if (map[m][n - 1] == 2) {

                            if (n - 1 == 0) {
                                System.out.println("箱子已经到左边了,请重新选择方向!");
                            } else {

                                if (map[m][n - 2] == 2) {
                                    System.out.println("左面还有一个箱子,请重新选择方向!");
                                } else if (map[m][n - 2] == 5) {
                                    System.out.println("左面还有一个箱子,请重新选择方向!");
                                } else if (map[m][n - 2] == 3) {
                                    map[m][n - 2] = 5;
                                    map[m][n] = 0;
                                    n = n - 1;
                                    map[m][n] = 1;
                                } else {
                                    map[m][n - 2] = 2;
                                    map[m][n] = 0;
                                    n = n - 1;
                                    map[m][n] = 1;
                                }

                            }

                        } else if (map[m][n - 1] == 5) {

                            if (n - 1 == 0) {
                                System.out.println("已经到最上面了!");
                            } else {

                                if (map[m][n - 2] == 2) {
                                    System.out.println("上面有一个箱子,请重新选择方向");
                                    break;
                                } else if (map[m][n - 2] == 3) {
                                    map[m][n - 2] = 5;
                                    map[m][n] = 0;
                                    n = n - 1;
                                    map[m][n] = 4;
                                } else {

                                    map[m][n - 2] = 2;
                                    map[m][n] = 0;
                                    n = n - 1;
                                    map[m][n] = 4;

                                }

                            }

                        } else if (map[m][n - 1] == 3) {
                            map[m][n] = 0;
                            n = n - 1;
                            map[m][n] = 4;

                        } else {

                            map[m][n] = 0;
                            n = n - 1;
                            map[m][n] = 1;

                        }

                    }

                }
                break;
            case "S":

                if (m == map.length) {
                    System.out.println("小人已经到最上面了不能再走了!");
                } else {

                    if (map[m][n] == 4) {
                        if (map[m + 1][n] == 2) {

                            if (m + 1 == 0) {
                                System.out.println("箱子已经到顶了,请重新选择方向!");
                            } else {

                                if (map[m + 2][n] == 2) {
                                    System.out.println("下面还有一个箱子,请重新选择方向!");
                                } else if (map[m + 2][n] == 5) {
                                    System.out.println("下面还有一个箱子,请重新选择方向!");
                                } else if (map[m + 2][n] == 3) {
                                    map[m + 2][n] = 5;
                                    map[m][n] = 3;
                                    m = m + 1;
                                    map[m][n] = 1;
                                } else {
                                    map[m + 2][n] = 2;
                                    map[m][n] = 3;
                                    m = m + 1;
                                    map[m][n] = 1;
                                }

                            }

                        } else if (map[m + 1][n] == 5) {

                            if (m + 1 == map.length) {
                                System.out.println("已经到最下面了!");
                            } else {
                                map[m + 1][n] = 3;
                                if (map[m + 2][n] == 2) {
                                    System.out.println("下面有一个箱子,请重新选择方向");
                                    break;
                                } else if (map[m + 2][n] == 3) {
                                    map[m + 2][n] = 5;
                                    map[m][n] = 3;
                                    m = m + 1;
                                    map[m][n] = 4;
                                } else {

                                    map[m + 2][n] = 2;
                                    map[m][n] = 3;
                                    m = m + 1;
                                    map[m][n] = 4;

                                }

                            }

                        } else if (map[m + 1][n] == 3) {
                            map[m][n] = 3;
                            m = m + 1;
                            map[m][n] = 4;

                        } else {

                            map[m][n] = 3;
                            m = m + 1;
                            map[m][n] = 1;

                        }
                    } else {

                        if (map[m + 1][n] == 2) {

                            if (m + 1 == 0) {
                                System.out.println("箱子已经到顶了,请重新选择方向!");
                            } else {

                                if (map[m + 2][n] == 2) {
                                    System.out.println("上面还有一个箱子,请重新选择方向!");
                                } else if (map[m + 2][n] == 5) {
                                    System.out.println("上面还有一个箱子,请重新选择方向!");
                                } else if (map[m + 2][n] == 3) {
                                    map[m + 2][n] = 5;
                                    map[m][n] = 0;
                                    m = m + 1;
                                    map[m][n] = 1;
                                } else {
                                    map[m + 2][n] = 2;
                                    map[m][n] = 0;
                                    m = m + 1;
                                    map[m][n] = 1;
                                }

                            }

                        } else if (map[m + 1][n] == 5) {

                            if (m + 1 == 0) {
                                System.out.println("已经到最上面了!");
                            } else {

                                if (map[m + 2][n] == 2) {
                                    System.out.println("上面有一个箱子,请重新选择方向");
                                    break;
                                } else if (map[m + 2][n] == 3) {
                                    map[m + 2][n] = 5;
                                    map[m][n] = 0;
                                    m = m + 1;
                                    map[m][n] = 4;
                                } else {

                                    map[m + 2][n] = 2;
                                    map[m][n] = 0;
                                    m = m + 1;
                                    map[m][n] = 4;

                                }

                            }

                        } else if (map[m + 1][n] == 3) {
                            map[m][n] = 0;
                            m = m + 1;
                            map[m][n] = 4;

                        } else {

                            map[m][n] = 0;
                            m = m + 1;
                            map[m][n] = 1;

                        }

                    }

                }
                break;
            case "D":

                if (n == map.length) {
                    System.out.println("小人已经到最右面了不能再走了!");
                } else {

                    if (map[m][n] == 4) {
                        if (map[m][n + 1] == 2) {

                            if (n + 1 == 0) {
                                System.out.println("箱子已经到顶了,请重新选择方向!");
                            } else {

                                if (map[m][n + 2] == 2) {
                                    System.out.println("右面还有一个箱子,请重新选择方向!");
                                } else if (map[m][n + 2] == 5) {
                                    System.out.println("右面还有一个箱子,请重新选择方向!");
                                } else if (map[m][n + 2] == 3) {
                                    map[m][n + 2] = 5;
                                    map[m][n] = 3;
                                    n = n + 1;
                                    map[m][n] = 1;
                                } else {
                                    map[m][n + 2] = 2;
                                    map[m][n] = 3;
                                    n = n + 1;
                                    map[m][n] = 1;
                                }

                            }

                        } else if (map[m][n + 1] == 5) {

                            if (n + 1 == 0) {
                                System.out.println("已经到最上面了!");
                            } else {
                                map[m][n + 1] = 3;
                                if (map[m][n + 2] == 2) {
                                    System.out.println("上面有一个箱子,请重新选择方向");
                                    break;
                                } else if (map[m][n + 2] == 3) {
                                    map[m][n + 2] = 5;
                                    map[m][n] = 3;
                                    n = n + 1;
                                    map[m][n] = 4;
                                } else {

                                    map[m][n + 2] = 2;
                                    map[m][n] = 3;
                                    n = n + 1;
                                    map[m][n] = 4;

                                }

                            }

                        } else if (map[m][n + 1] == 3) {
                            map[m][n] = 3;
                            n = n + 1;
                            map[m][n] = 4;

                        } else {

                            map[m][n] = 3;
                            n = n + 1;
                            map[m][n] = 1;

                        }
                    } else {

                        if (map[m][n + 1] == 2) {

                            if (n + 1 == map.length) {
                                System.out.println("箱子已经到右边了,请重新选择方向!");
                            } else {

                                if (map[m][n + 2] == 2) {
                                    System.out.println("右面还有一个箱子,请重新选择方向!");
                                } else if (map[m][n + 2] == 5) {
                                    System.out.println("右面还有一个箱子,请重新选择方向!");
                                } else if (map[m][n + 2] == 3) {
                                    map[m][n + 2] = 5;
                                    map[m][n] = 0;
                                    n = n + 1;
                                    map[m][n] = 1;
                                } else {
                                    map[m][n + 2] = 2;
                                    map[m][n] = 0;
                                    n = n + 1;
                                    map[m][n] = 1;
                                }

                            }

                        } else if (map[m][n + 1] == 5) {

                            if (n + 1 == 0) {
                                System.out.println("已经到最上面了!");
                            } else {

                                if (map[m][n + 2] == 2) {
                                    System.out.println("上面有一个箱子,请重新选择方向");
                                    break;
                                } else if (map[m][n + 2] == 3) {
                                    map[m][n + 2] = 5;
                                    map[m][n] = 0;
                                    n = n + 1;
                                    map[m][n] = 4;
                                } else {

                                    map[m][n + 2] = 2;
                                    map[m][n] = 0;
                                    n = n + 1;
                                    map[m][n] = 4;

                                }

                            }

                        } else if (map[m][n + 1] == 3) {
                            map[m][n] = 0;
                            n = n + 1;
                            map[m][n] = 4;

                        } else {

                            map[m][n] = 0;
                            n = n + 1;
                            map[m][n] = 1;

                        }

                    }

                }
                break;
            default:

                System.out.println("您主动关闭程序了!");
                return;

            }
            System.out.println("小地图目前状态如下:");
            System.out.println("-------------------------------");
            for (int i = 0; i < map.length; i++) {
                for (int j = 0; j < map[i].length; j++) {
                    System.out.print(map[i][j] + "\t");
                }
                System.out.println();
            }
            if (map[boxK][boxL] == 5 && map[boxK1][boxL1] == 5) {
                System.out.println("您已经成功了!");

                return;
            }

        }

    }

}

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值