别用vector,而且我想要完整代码
时间: 2025-02-15 20:17:53 浏览: 19
如果你不想使用`vector`,我们可以改用数组或者其他数据结构来创建一个二维的迷宫。这里我给你一个基于固定大小数组的示例,用于创建用户自定义大小的迷宫:
```cpp
#include <iostream>
#include <stack>
#include <string>
const int DEFAULT_SIZE = 5; // 默认迷宫大小,你可以让用户输入
char maze[DEFAULT_SIZE][DEFAULT_SIZE]; // 使用静态数组代替vector
void createMaze(int rows, int cols) {
int start = 0, end = cols - 1; // 选择起始和结束点
bool wall = true;
while (!isFinished()) { // 跟之前的类似,检查是否完成迷宫
// 添加墙和通路,随机选择方向
if (wall) {
maze[start][end] = '#';
wall = false;
} else {
maze[start][end] = '.';
wall = true;
// 随机移动到相邻单元格
int newDirX = rand() % 2 == 0 ? 1 : -1; // 向左或向右
int newDirY = rand() % 2 == 0 ? 1 : -1; // 向上或向下
start += newDirX;
end += newDirY;
// 检查边界并确保不会进入已填满的部分
if (start >= 0 && start < rows && end >= 0 && end < cols && maze[start][end] != '#') {
continue;
}
start = std::min(start, end); // 如果到达边界,退回到起点
end = std::max(start, end);
}
}
}
bool isFinished() {
return maze[0][0] == '#' || maze[0][DEFAULT_SIZE - 1] == '#' ||
maze[DEFAULT_SIZE - 1][0] == '#' || maze[DEFAULT_SIZE - 1][DEFAULT_SIZE - 1] == '#';
}
int main() {
int rows, cols;
std::cout << "请输入迷宫的行数(rows): ";
std::cin >> rows;
std::cout << "请输入迷宫的列数(columns): ";
std::cin >> cols;
// 检查用户输入的尺寸是否合理,如果不是默认值则调整数组大小
if (rows * cols > DEFAULT_SIZE * DEFAULT_SIZE) {
std::cerr << "迷宫太大,无法用当前大小的数组存储,请调整迷宫尺寸。";
return 1;
}
createMaze(rows, cols);
// 输出迷宫
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
std::cout << maze[i][j];
}
std::cout << "\n";
}
// ... (其他部分的代码保持不变)
return 0;
}
```
阅读全文
相关推荐

















