用C语言编写一个随机生成迷宫的代码
时间: 2023-08-28 09:03:29 浏览: 55
好的,下面是一个简单的随机生成迷宫的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 10
#define COL 10
void print_maze(int maze[ROW][COL]) {
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
printf("%d ", maze[i][j]);
}
printf("\n");
}
}
void generate_maze(int maze[ROW][COL]) {
// 初始化迷宫
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
maze[i][j] = 1;
}
}
// 随机生成迷宫
srand(time(NULL));
int start_row = rand() % ROW;
int start_col = rand() % COL;
maze[start_row][start_col] = 0;
while (1) {
int row = rand() % ROW;
int col = rand() % COL;
if (maze[row][col] == 1) {
// 判断相邻格子是否已经被打通
if ((row - 1 >= 0 && maze[row - 1][col] == 0)
|| (row + 1 < ROW && maze[row + 1][col] == 0)
|| (col - 1 >= 0 && maze[row][col - 1] == 0)
|| (col + 1 < COL && maze[row][col + 1] == 0)) {
maze[row][col] = 0;
}
}
// 判断是否已经生成了迷宫
int flag = 0;
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
if (maze[i][j] == 1) {
flag = 1;
break;
}
}
}
if (flag == 0) {
break;
}
}
}
int main() {
int maze[ROW][COL];
generate_maze(maze);
print_maze(maze);
return 0;
}
```
这段代码定义了迷宫的行数和列数,然后随机选取一个起点,逐步生成迷宫,最后打印出来。注意,这只是一个简单的示例代码,实际应用中可能需要更复杂的算法和数据结构来生成更有趣的迷宫。