随机生成一个迷宫,用1表示障碍物,用2表示可通过的路径标记,3表示不可通过的路径标记
import java.util.Random;
public class MiGong {
public static void main(String[] args) {
int [][] map = new int[10][10];
for (int i = 0; i < 10; i++) {
map[0][i] = 1;
map[i][0] = 1;
map[9][i] = 1;
map[i][9] = 1;
} //围起“城墙”
Random random = new Random();
for(int i = 0 ; i < 10 ; i++) {
int Row = random.nextInt(10);
int Col = random.nextInt(10);
if((Row != 1 && Col != 1) || (Row != 8 && Col != 8)){
map[Row][Col] = 1;}
} //随机设定地图
/* map[1][3] = map[2][3] = map[1][7] = map[2][7] = 1;
map[3][5] = map[3][6] = map[4][2] = map[4][3] = 1;
map[4][4] = map[5][4] = map[6][2] = map[7][2] = 1;
map[7][3] = map[7][4] = map[6][6] = map[7][6] = 1;
map[7][7] = map[8][1] = 1; //“1”代表障碍物 */
//课本p50上的地图
for (int i = 0; i < 10; i++) { //打印原地图
for (int j = 0; j < 10; j++) {
System.out.print(map[i][j] + " ");
if(j == 9){
System.out.println();
}
}
}
System.out.println();
System.out.println("this is result:");
road(map , 1 ,1);
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.print(map[i][j] + " ");
if(j == 9){
System.out.println();
}
}
}
}
public static boolean road(int[][] map , int i , int j){
if(map[8][8]==2){
return true;
}else{
if (map[i][j]==0){
map[i][j]=2;
if(road(map,i+1,j)){ //向下走
return true;
}else if(road(map,i,j+1)){ //向右走
return true;
}else if(road(map,i-1,j)){ //向上走
return true;
}else if(road(map,i,j-1)){ //向左走
return true;
}else{
map[i][j]=3;
return false;
}
}else{
return false;
}
}
}
}