package test5_7;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] max = new int[8][8];
//初始化二维数组
for(int i = 0;i < 8;i++) {
for(int j = 0;j < 8;j++) {
max[i][j] = 0;
}
}
//将上下设置为1,1为围墙
for(int i = 0;i < 8;i++) {
max[0][i] = 1;
max[7][i] = 1;
}
//将左右设置为1,1为围墙
for(int i = 0;i < 8;i++) {
max[i][0] = 1;
max[i][7] = 1;
}
//设置栅栏
setBlock(max,10);//设置栅栏个数
//打印迷宫
print(max);
//获得路径
boolean res = setWay(max,1,1);//设置起点坐标
if(res) {
System.out.println("-----路径找到了!-----");
}else {
System.out.println("-----找不到终点!-----");
}
}
//获取x(行)的坐标
public static int getX() {
return (int) (Math.random()*10)%6+1;
}
//获取y(列)的坐标
public static int getY() {
return (int) (Math.random()*10)%6+1;
}
//获取路径
public static boolean setWay(int[][] max,int x,int y) {
System.out.println("---------------------");
print(max);
if(max[6][6] == 2) {//终点坐标
return true;
}else {
if(max[x][y]==0) {
max[x][y] = 2;//2表示走过的路径
if(setWay(max,x+1,y)) {//向下移动
return true;
}else if(setWay(max,x,y+1)) {//向右移动
return true;
}else if(setWay(max,x-1,y)) {//向上移动
return true;
}else if(setWay(max,x,y-1)) {//向左移动
return true;
}else {
max[x][y]=3;//3表示回溯
return false;
}
}
return false;
}
}
//设置栅栏
public static void setBlock(int[][] max,int random) {
int count = 0;
while(true) {
int x = getX();
int y = getY();
if((x == 1 && y == 1) || (x == 6 && y == 6)) {
}
else if(max[x][y]!=1) {
max[x][y] = 1;
System.out.println("x = "+x+" "+"y = "+y);
count++;
}
if(count == random)
break;
}
}
//打印
public static void print(int[][] max) {
for(int i = 0;i < 8;i++) {
for(int j = 0;j < 8;j++) {
System.out.print(max[i][j]+" ");
}
System.out.println("");
}
}
}
结果
结果2