您的位置:首页 > 编程语言 > Java开发

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

2017-08-14 11:48 423 查看
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]
= 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]
= 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]
= 4;

        } else if ((boxK1 == boxM && boxL1 == boxM) || (boxK1 == boxM1 && boxL1 == boxN1)) {

            map[b
10df9
oxK1][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]
== 4) {

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

                            if (m - 1 == 0) {

                                System.out.println("箱子已经到顶了,请重新选择方向!");

                            } else {

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

                                    System.out.println("上面还有一个箱子,请重新选择方向!");

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

                                    System.out.println("上面还有一个箱子,请重新选择方向!");

                                } else if (map[m - 2]
== 3) {

                                    map[m - 2]
= 5;

                                    map[m]
= 3;

                                    m = m - 1;

                                    map[m]
= 1;

                                } else {

                                    map[m - 2]
= 2;

                                    map[m]
= 3;

                                    m = m - 1;

                                    map[m]
= 1;

                                }

                            }

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

                            if (m - 1 == 0) {

                                System.out.println("已经到最上面了!");

                            } else {

                                map[m - 1]
= 3;

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

                                    System.out.println("上面有一个箱子,请重新选择方向");

                                    break;

                                } else if (map[m - 2]
== 3) {

                                    map[m - 2]
= 5;

                                    map[m]
= 3;

                                    m = m - 1;

                                    map[m]
= 4;

                                } else {

                                    map[m - 2]
= 2;

                                    map[m]
= 3;

                                    m = m - 1;

                                    map[m]
= 4;

                                }

                            }

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

                            map[m]
= 3;

                            m = m - 1;

                            map[m]
= 4;

                        } else {

                            map[m]
= 3;

                            m = m - 1;

                            map[m]
= 1;

                        }

                    } else {

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

                            if (m - 1 == 0) {

                                System.out.println("箱子已经到顶了,请重新选择方向!");

                            } else {

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

                                    System.out.println("上面还有一个箱子,请重新选择方向!");

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

                                    System.out.println("上面还有一个箱子,请重新选择方向!");

                                } else if (map[m - 2]
== 3) {

                                    map[m - 2]
= 5;

                                    map[m]
= 0;

                                    m = m - 1;

                                    map[m]
= 1;

                                } else {

                                    map[m - 2]
= 2;

                                    map[m]
= 0;

                                    m = m - 1;

                                    map[m]
= 1;

                                }

                            }

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

                            if (m - 1 == 0) {

                                System.out.println("已经到最上面了!");

                            } else {

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

                                    System.out.println("上面有一个箱子,请重新选择方向");

                                    break;

                                } else if (map[m - 2]
== 3) {

                                    map[m - 2]
= 5;

                                    map[m]
= 0;

                                    m = m - 1;

                                    map[m]
= 4;

                                } else {

                                    map[m - 2]
= 2;

                                    map[m]
= 0;

                                    m = m - 1;

                                    map[m]
= 4;

                                }

                            }

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

                            map[m]
= 0;

                            m = m - 1;

                            map[m]
= 4;

                        } else {

                            map[m]
= 0;

                            m = m - 1;

                            map[m]
= 1;

                        }

                    }

                }

                break;

            case "A":

                if (n == 0) {

                    System.out.println("小人已经到最左面了不能再走了!");

                } else {

                    if (map[m]
== 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]
= 3;

                                    n = n - 1;

                                    map[m]
= 1;

                                } else {

                                    map[m][n - 2] = 2;

                                    map[m]
= 3;

                                    n = n - 1;

                                    map[m]
= 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]
= 3;

                                    n = n - 1;

                                    map[m]
= 4;

                                } else {

                                    map[m][n - 2] = 2;

                                    map[m]
= 3;

                                    n = n - 1;

                                    map[m]
= 4;

                                }

                            }

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

                            map[m]
= 3;

                            n = n - 1;

                            map[m]
= 4;

                        } else {

                            map[m]
= 3;

                            n = n - 1;

                            map[m]
= 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]
= 0;

                                    n = n - 1;

                                    map[m]
= 1;

                                } else {

                                    map[m][n - 2] = 2;

                                    map[m]
= 0;

                                    n = n - 1;

                                    map[m]
= 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]
= 0;

                                    n = n - 1;

                                    map[m]
= 4;

                                } else {

                                    map[m][n - 2] = 2;

                                    map[m]
= 0;

                                    n = n - 1;

                                    map[m]
= 4;

                                }

                            }

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

                            map[m]
= 0;

                            n = n - 1;

                            map[m]
= 4;

                        } else {

                            map[m]
= 0;

                            n = n - 1;

                            map[m]
= 1;

                        }

                    }

                }

                break;

            case "S":

                if (m == map.length) {

                    System.out.println("小人已经到最上面了不能再走了!");

                } else {

                    if (map[m]
== 4) {

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

                            if (m + 1 == 0) {

                                System.out.println("箱子已经到顶了,请重新选择方向!");

                            } else {

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

                                    System.out.println("下面还有一个箱子,请重新选择方向!");

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

                                    System.out.println("下面还有一个箱子,请重新选择方向!");

                                } else if (map[m + 2]
== 3) {

                                    map[m + 2]
= 5;

                                    map[m]
= 3;

                                    m = m + 1;

                                    map[m]
= 1;

                                } else {

                                    map[m + 2]
= 2;

                                    map[m]
= 3;

                                    m = m + 1;

                                    map[m]
= 1;

                                }

                            }

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

                            if (m + 1 == map.length) {

                                System.out.println("已经到最下面了!");

                            } else {

                                map[m + 1]
= 3;

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

                                    System.out.println("下面有一个箱子,请重新选择方向");

                                    break;

                                } else if (map[m + 2]
== 3) {

                                    map[m + 2]
= 5;

                                    map[m]
= 3;

                                    m = m + 1;

                                    map[m]
= 4;

                                } else {

                                    map[m + 2]
= 2;

                                    map[m]
= 3;

                                    m = m + 1;

                                    map[m]
= 4;

                                }

                            }

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

                            map[m]
= 3;

                            m = m + 1;

                            map[m]
= 4;

                        } else {

                            map[m]
= 3;

                            m = m + 1;

                            map[m]
= 1;

                        }

                    } else {

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

                            if (m + 1 == 0) {

                                System.out.println("箱子已经到顶了,请重新选择方向!");

                            } else {

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

                                    System.out.println("上面还有一个箱子,请重新选择方向!");

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

                                    System.out.println("上面还有一个箱子,请重新选择方向!");

                                } else if (map[m + 2]
== 3) {

                                    map[m + 2]
= 5;

                                    map[m]
= 0;

                                    m = m + 1;

                                    map[m]
= 1;

                                } else {

                                    map[m + 2]
= 2;

                                    map[m]
= 0;

                                    m = m + 1;

                                    map[m]
= 1;

                                }

                            }

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

                            if (m + 1 == 0) {

                                System.out.println("已经到最上面了!");

                            } else {

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

                                    System.out.println("上面有一个箱子,请重新选择方向");

                                    break;

                                } else if (map[m + 2]
== 3) {

                                    map[m + 2]
= 5;

                                    map[m]
= 0;

                                    m = m + 1;

                                    map[m]
= 4;

                                } else {

                                    map[m + 2]
= 2;

                                    map[m]
= 0;

                                    m = m + 1;

                                    map[m]
= 4;

                                }

                            }

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

                            map[m]
= 0;

                            m = m + 1;

                            map[m]
= 4;

                        } else {

                            map[m]
= 0;

                            m = m + 1;

                            map[m]
= 1;

                        }

                    }

                }

                break;

            case "D":

                if (n == map.length) {

                    System.out.println("小人已经到最右面了不能再走了!");

                } else {

                    if (map[m]
== 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]
= 3;

                                    n = n + 1;

                                    map[m]
= 1;

                                } else {

                                    map[m][n + 2] = 2;

                                    map[m]
= 3;

                                    n = n + 1;

                                    map[m]
= 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]
= 3;

                                    n = n + 1;

                                    map[m]
= 4;

                                } else {

                                    map[m][n + 2] = 2;

                                    map[m]
= 3;

                                    n = n + 1;

                                    map[m]
= 4;

                                }

                            }

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

                            map[m]
= 3;

                            n = n + 1;

                            map[m]
= 4;

                        } else {

                            map[m]
= 3;

                            n = n + 1;

                            map[m]
= 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]
= 0;

                                    n = n + 1;

                                    map[m]
= 1;

                                } else {

                                    map[m][n + 2] = 2;

                                    map[m]
= 0;

                                    n = n + 1;

                                    map[m]
= 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]
= 0;

                                    n = n + 1;

                                    map[m]
= 4;

                                } else {

                                    map[m][n + 2] = 2;

                                    map[m]
= 0;

                                    n = n + 1;

                                    map[m]
= 4;

                                }

                            }

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

                            map[m]
= 0;

                            n = n + 1;

                            map[m]
= 4;

                        } else {

                            map[m]
= 0;

                            n = n + 1;

                            map[m]
= 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;

            }

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐