用c语言 输入数字生成迷宫
时间: 2024-02-06 22:12:01 浏览: 77
好的,生成迷宫可以采用随机生成的方法,具体实现可以按照以下步骤:
1. 定义一个二维数组表示迷宫,其中 0 表示通路,1 表示墙壁;
2. 初始化迷宫,将所有元素都赋值为 1,表示全部为墙壁;
3. 从起点开始,随机选择一个方向(上、下、左、右),并将其邻居元素(即相邻的上下左右四个元素)设置为通路(即将其值设为 0);
4. 重复步骤 3,直到迷宫中存在通路连接起点和终点。
下面是一份示例代码,仅供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 10 // 迷宫行数
#define COL 10 // 迷宫列数
// 随机生成一个 0 或 1 的整数
int rand_int() {
return rand() % 2;
}
// 打印迷宫
void print_maze(int maze[][COL]) {
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
if (maze[i][j] == 0) {
printf(" "); // 通路
} else {
printf("■"); // 墙壁
}
}
printf("\n");
}
}
int main() {
srand((unsigned)time(NULL)); // 初始化随机数种子
int maze[ROW][COL];
// 初始化迷宫,全部为墙壁
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
maze[i][j] = 1;
}
}
// 设置起点和终点
maze[0][0] = 0; // 起点
maze[ROW - 1][COL - 1] = 0; // 终点
// 生成迷宫
int i = 0, j = 0;
while (maze[ROW - 1][COL - 1] == 1) { // 直到终点可以到达
int dir = rand() % 4; // 随机选择一个方向(上、下、左、右)
int new_i = i, new_j = j;
switch (dir) {
case 0: // 上
if (i > 0) {
new_i--;
}
break;
case 1: // 下
if (i < ROW - 1) {
new_i++;
}
break;
case 2: // 左
if (j > 0) {
new_j--;
}
break;
case 3: // 右
if (j < COL - 1) {
new_j++;
}
break;
}
if (maze[new_i][new_j] == 1) { // 如果邻居是墙壁,将其设置为通路
maze[new_i][new_j] = 0;
i = new_i;
j = new_j;
}
}
// 打印迷宫
print_maze(maze);
return 0;
}
```
这份代码生成的迷宫可能会比较简单,如果想增加难度,可以调整迷宫的大小、调整随机选择方向的概率,或者采用其他更复杂的算法来生成迷宫。
阅读全文