C语言20x20迷宫
时间: 2024-05-10 21:11:29 浏览: 114
以下是一个生成C语言20x20迷宫的例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 20
int maze[SIZE][SIZE];
int dir = { {0, 1}, {1, 0}, {0, -1}, {-1, 0} };
void generateMaze(int x, int y) {
maze[x][y] = 0;
int order = {0, 1, 2, 3};
for (int i = 0; i < 4; i++) {
int j = rand() % 4;
int temp = order[i];
order[i] = order[j];
order[j] = temp;
}
for (int i = 0; i < 4; i++) {
int next = order[i];
int nx = x + 2 * dir[next];
int ny = y + 2 * dir[next];
if (nx >= 0 && nx < SIZE && ny >= 0 && ny < SIZE && maze[nx][ny] == 1) {
maze[nx][ny] = 0;
maze[x + dir[next]][y + dir[next]] = 0;
generateMaze(nx, ny);
}
}
}
int main() {
srand(time(NULL));
// 初始化迷宫
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
maze[i][j] = 1;
}
}
// 生成迷宫
generateMaze(1, 1);
// 打印迷宫
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
if (maze[i][j] == 0) {
printf(" ");
} else {
printf("#");
}
}
printf("\n");
}
return 0;
}
```
这段代码使用递归算法生成了一个20x20的迷宫。迷宫中的墙用"#"表示,通道用空格表示。你可以根据需要修改迷宫的大小,只需修改`SIZE`的值即可。
阅读全文