c写一个简单迷宫生成代码
时间: 2024-10-10 07:08:46 浏览: 9
在C语言中创建一个简单的迷宫生成算法,可以采用深度优先搜索(DFS)或广度优先搜索(BFS),这里以DFS为例,因为它的实现相对简洁。我们将生成一个二维数组表示迷宫,其中0代表空地,1代表墙壁。下面是一个基本的Maze C程序示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define ROWS 15 // 迷宫行数
#define COLS 20 // 迷宫列数
typedef struct {
int maze[ROWS][COLS];
} Maze;
// 初始化迷宫为全墙
void init_maze(Maze *maze) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
maze->maze[i][j] = 1;
}
}
}
// 检查当前位置是否可行
int is_valid(int x, int y, Maze *maze) {
return x >= 0 && x < ROWS && y >= 0 && y < COLS && !maze->maze[x][y];
}
// DFS生成迷宫
void dfs_generate_maze(int start_x, int start_y, Maze *maze) {
if (is_valid(start_x, start_y, maze)) {
maze->maze[start_x][start_y] = 0; // 开始位置标记为空地
// 检查上下左右邻居
dfs_generate_maze(start_x + 1, start_y, maze); // 上
dfs_generate_maze(start_x - 1, start_y, maze); // 下
dfs_generate_maze(start_x, start_y + 1, maze); // 右
dfs_generate_maze(start_x, start_y - 1, maze); // 左
}
}
// 打印迷宫
void print_maze(Maze *maze) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", maze->maze[i][j]);
}
printf("\n");
}
}
int main() {
Maze maze;
init_maze(&maze);
dfs_generate_maze(0, 0, &maze);
print_maze(&maze);
return 0;
}
```
这个程序首先初始化一个全墙的迷宫,然后从起点开始,逐个清除周围的墙壁,并对相邻的格子进行同样的操作,直到所有可达区域都被访问过。