C++随机生成一个迷宫的代码,
时间: 2024-02-25 22:57:22 浏览: 142
以下是一个简单的C++代码示例,用于随机生成一个迷宫:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int ROW = 10; // 迷宫的行数
const int COL = 10; // 迷宫的列数
int main()
{
srand(time(NULL)); // 初始化随机数种子
int maze[ROW][COL]; // 迷宫矩阵,0表示通道,1表示墙
int startRow, startCol; // 起点的行列坐标
int endRow, endCol; // 终点的行列坐标
// 初始化迷宫
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
if (i == 0 || j == 0 || i == ROW - 1 || j == COL - 1) {
maze[i][j] = 1; // 边界上的格子为墙
} else {
maze[i][j] = rand() % 2; // 随机生成通道或墙
}
}
}
// 随机生成起点和终点
startRow = rand() % (ROW - 2) + 1;
startCol = rand() % (COL - 2) + 1;
do {
endRow = rand() % (ROW - 2) + 1;
endCol = rand() % (COL - 2) + 1;
} while (endRow == startRow && endCol == startCol);
// 在起点和终点处打开通道
maze[startRow][startCol] = 0;
maze[endRow][endCol] = 0;
// 输出迷宫
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
if (maze[i][j] == 0) {
cout << " "; // 通道用两个空格表示
} else {
cout << "■"; // 墙用实心正方形表示
}
}
cout << endl;
}
return 0;
}
```
该程序中,首先使用`srand(time(NULL))`初始化随机数种子,然后使用双重循环生成迷宫矩阵,其中边界上的格子为墙,内部格子随机生成通道或墙。接着随机生成起点和终点,最后在起点和终点处打开通道。最后输出迷宫,通道用两个空格表示,墙用实心正方形表示。
阅读全文