今天我们用简单的函数调用实现一个迷宫,具体操作如下:
迷宫的功能描述
1.提示“请输入迷宫的行列数:5 5”
2.提示“请输入迷宫的路径信息(0是可以行走,1是不能行走):”
0 0 1 1 1
1 0 0 0 1
1 0 1 1 1
1 0 1 1 1
1 0 0 0 0
搜索迷宫路径…
3.若不存在路径则打印“迷宫不存在有效路径”
4. 若存在路径则再次打印迷宫,把是路径的地方用 * 打印出
* * 1 1 1
1 * 0 0 1
1 * 1 1 1
1 * 1 1 1
1 * * * *
迷宫功能分析
0 0 1 1 1
1 0 0 0 1
1 0 1 1 1
1 0 1 1 1
1 0 0 0 0
首先用在主函数中创建一个迷宫对象,通过二维数组生成迷宫,定义迷宫的行列数和迷宫信息!
public class Main {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
System.out.print("请输入迷宫的行列数:");
int row = in.nextInt();
int col = in.nextInt();
//用row 和 col生成迷宫对象
Maze maze = new Maze(row,col);
System.out.println("请输入迷宫的路径信息:");
for (int i = 0; i < row;++i) {
for (int j = 0; j < col; ++j) {
int data = in.nextInt();
maze.creatMazeNode(data,i,j);
}
}
//设置迷宫每一个节点的四个方向的行走状态
maze.setMazeNodeState();
//开始寻找迷宫路径
maze.findMazePath();
//输出迷宫路径结果
maze.showMazePath();
}
}
解决这个问题需要创建一个栈,将入口处节点放入栈顶,规定在每一个节点处寻找迷宫路径按照右下左上的方式寻找,依次走过每一个节点,将可行走路径的节点放入栈中,最终将栈中元素输出,并打印出迷宫状态!
package 迷宫;
import java.util.Arrays;
/**
* 顺序栈
* 寻找迷宫路径需要用到的栈结构
*/
public class Stack {
//存储节点类型
private Node[] array;
//栈顶的位置
private int top;
//构造,push,pop,top,full,empty
public Stack(){
//定义顺序栈的长度
this.array = new Node[10];
this.top = 0;
}
public void push (Node node){
//构造节点入栈
if (this.top==this.array.length){
//判断数组元素是否溢出,若溢出则对其进行扩容