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;
}
}
}
}
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;
}
}
}
}
相关文章推荐
- 编程练习二维数组 java
- Java程序练习-合并两个单链表
- java中两个一维数组怎么能合成一个二维数组!!!请大哥门指点!!!
- Java 将任意数组的任意两个位置的数据进行交换
- java循环练习:手动输入两个数字m和n,运算求出m~n之间所有偶数的和
- JAVA中使用反射将两个Integer类型的数据交换位置
- 【Java】给定两个32位的整数N与M,以及表示比特位置的i与j。编写一个方法,将M插入N,使得M从N的第 j 位开始,到第 i 位结束。
- java练习获取两个字符串的最大相同子串
- Java 基础一些代码练习笔记(Array二维数组)
- java如何高效打印一个二维数组(不用递归,不用两个for循环)
- java中List集合中任意两个位置的数据互相调换
- Java链表指针确实好烦 - 交换链表中连续的两个节点的位置
- 两个升序表,打印L中那些由P所指定的位置上的元素 java实现
- java交换两个数字位置
- java中根据两个位置的经纬度计算距离
- java数组练习2创建二维数组,并将数组中的内容输出到控制台
- 通过两个位置的经纬度坐标计算距离(Java版本)
- 推箱子 两个bfs():一个用来记录人是否能到达指定的位置,另一个用来判断箱子最终是否能够到达指定点,很经典
- java程序练习:尝试创建一个父类,在父类中创建两个方法,在子类中覆盖第二个方法,为子类创建一个对象,将他向上转型到基类并调用这个方法。
- Java之戳中痛点 - (3)三目运算符的两个操作数类型尽量一致 Java之戳中痛点 - (4)i++ 和 ++i 探究原理 Java之戳中痛点 - (1)易变业务使用脚本语言编写 Java之戳中痛点 - (2)取余用偶判断,不要用奇判断 (5)switch语句break不能忘以及default不同位置的用法 Java之戳中痛点 - (7)善用Java整型缓存池