用C加加制作一个迷宫生成器
时间: 2024-05-06 10:18:59 浏览: 195
好的,下面是一个简单的迷宫生成器的 C++ 代码,使用了深度优先搜索算法(DFS):
```cpp
#include <iostream>
#include <vector>
#include <stack>
#include <cstdlib>
#include <ctime>
using namespace std;
const int MAXN = 1005;
const int dx[4] = {1, -1, 0, 0};
const int dy[4] = {0, 0, 1, -1};
int n, m;
char maze[MAXN][MAXN];
void generate_maze(int sx, int sy) {
stack<pair<int, int>> S;
S.push({sx, sy});
while (!S.empty()) {
int x = S.top().first, y = S.top().second;
S.pop();
if (maze[x][y] != '#') {
maze[x][y] = '#';
vector<int> dir = {0, 1, 2, 3};
srand(time(0));
random_shuffle(dir.begin(), dir.end());
for (int i = 0; i < 4; i++) {
int nx = x + dx[dir[i]];
int ny = y + dy[dir[i]];
if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && maze[nx][ny] != '#') {
S.push({nx, ny});
}
}
}
}
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
maze[i][j] = '.';
}
}
generate_maze(1, 1);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cout << maze[i][j];
}
cout << endl;
}
return 0;
}
```
该代码的大致思路如下:
1. 首先输入迷宫的行数和列数,以及起点坐标。
2. 初始化一个全是`.`的迷宫。
3. 以起点为起始点,使用深度优先搜索算法,随机地选择四个方向中未访问的方向,将其标记为`#`,并将该点入栈。
4. 当栈为空时,迷宫生成完毕。
5. 输出生成的迷宫。
这段代码中用到了一个随机打乱方向的技巧,可以提高迷宫的随机性。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)