public class Migon01{
public static void main(String[] args) {
//第一步先创建迷宫
//1.利用双层数组进行设置,可以通过的路径设置成 0 ,墙壁设置 成 1
int arr[][] = new int[8][7];
//利用for喜欢设置墙壁
for(int i = 0; i < 7; i++){
// 设置列
arr[i][0] = 1;
arr[i][6] = 1;
// 设置行
arr[0][i] = 1;
arr[7][i] = 1;
}
//设置两个特殊值
arr[3][1] = 1;
arr[3][2] = 1;
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i].length; j++){
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
System.out.println("====================");
//创建一共玩家T对象
T t = new T();
t.findWay(arr, 1, 1);//先把数组传入, 然后把初始值传入
//for循环从新遍历数组,查看是否实现
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i].length; j++){
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
class T{
//创建findWay方法,寻找迷宫出炉
//1.第一步先等到初始值 arr[1][1]
//2.确定迷宫出口 arr[6][5]
//3.如果找到就返回true 没有找到就返回 false
//4.设置 0 表示可以走 1表示不可以走 2表示可以走 3表示可以走但是走过是死路
//5.当终点 arr[6][5] = 2 表示已经走出来了
//6.先确定老鼠是怎么走的 下-> 右 -> 上 -> 左
//7.利用 i 和 j 确定老鼠的位置
//
public boolean findWay(int arr[][], int i, int j){
if(arr[6][5] == 2){//先判断是否在出口位置
return true;
}else{
if(arr[i][j] == 0){
//先假定可以执行
arr[i][j] = 2;
if(findWay(arr, i + 1, j)){ //判断是否可以往下走
return true;
}else if(findWay(arr, i, j + 1)){ //判断是否可以往右走
return true;
}else if(findWay(arr, i - 1, j)){//判断是否可以往上走
return true;
}else if(findWay(arr, i, j -1)){//判断是否可以往左走
return true;
}else{
arr[i][j] = 3;
return false;
}
}else{//表示arr[i][j] == 1 或 2 或3
return false;
}
}
}
}