迷宫嘛,就是包含一个起始点(startx,starty)和一个终点(endx,endy),中间包含被墙堵住无法移动的区域({(x,y)....}),以及大小(也就是所谓的边界),,长(m),宽(n)
(不规则迷宫可以通过添加点到无法移动的集合形成)
下面就是生成这样一个迷宫的方法:
int m;//长
int n;//宽
int maze[][];//迷宫,有障碍值为1,无为0
int startx;//起点x
int starty;//起点y
int endx;//终点x
int endy;//终点y
/**
* 生成迷宫
* @throws IOException
*/
public void createMaze() throws IOException {
System.out.println("输入 m");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
m=Integer.parseInt(br.readLine().trim());
System.out.println("输入 n");
n=Integer.parseInt(br.readLine().trim());
maze=new int[m][n];
while(true){
System.out.println("输入障碍横纵坐标,以空格隔开,退出请输入'esc'");
String temp=br.readLine().trim();
if(temp.trim().equals("esc")){
break;
}
int x=Integer.parseInt(temp.split(" ")[0]);
int y=Integer.parseInt(temp.split(" ")[1]);
maze[x][y]=1;
}
String s;
System.out.println("输入起始点坐标,以空格隔开");
s=br.readLine().trim();
startx=Integer.parseInt(s.split(" ")[0]);
starty=Integer.parseInt(s.split(" ")[1]);
System.out.println("输入终止点坐标,以空格隔开");
s=br.readLine().trim();
endx=Integer.parseInt(s.split(" ")[0]);
endy=Integer.parseInt(s.split(" ")[1]);
if(maze[startx][starty]==1||maze[endx][endy]==1){
System.out.println("想搞