Java写走迷宫代码
时间: 2024-12-27 18:20:51 浏览: 1
在Java中编写走迷宫的代码通常涉及到图形处理、路径搜索算法(如深度优先搜索(DFS)或广度优先搜索(BFS),还有可能结合回溯法)。下面是一个简单的深度优先搜索迷宫解决的例子:
```java
import java.util.*;
class Cell {
boolean visited;
boolean isWall;
// 构造函数和getters/setters省略
}
class MazeSolver {
private int[][] maze; // 迷宫矩阵
private List<Cell> path = new ArrayList<>(); // 存储路径
public void solve(int startX, int startY) {
Cell startCell = maze[startX][startY];
if (startCell.isWall || startCell.visited) return;
startCell.visited = true;
path.add(startCell);
dfs(maze, startX, startY);
}
private void dfs(int[][] maze, int x, int y) {
// 检查是否越界或遇到墙
if (x < 0 || x >= maze.length || y < 0 || y >= maze[0].length ||
maze[x][y].isWall || maze[x][y].visited) return;
maze[x][y].visited = true;
path.add(maze[x][y]);
// 搜索四个相邻的格子
dfs(maze, x + 1, y); // 右
dfs(maze, x - 1, y); // 左
dfs(maze, x, y + 1); // 下
dfs(maze, x, y - 1); // 上
// 回溯:当所有邻接点都尝试过后,撤销当前节点标记
maze[x][y].visited = false;
path.remove(path.size() - 1);
}
// 获取解迷宫路径
public List<Cell> getPath() {
return path;
}
}
// 使用示例
public static void main(String[] args) {
MazeSolver solver = new MazeSolver();
// 初始化迷宫矩阵,1表示通道,0表示墙
int[][] maze = ...;
solver.solve(0, 0); // 从起点开始解迷宫
List<Cell> path = solver.getPath();
}
```
阅读全文