C语言随机迷宫生成程序:代码示例及详解

本文将使用C语言编写一个程序,生成一个随机迷宫并输出结果。

代码示例

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define WIDTH 30
#define HEIGHT 20

typedef enum {
    WALL,
    PATH
} CellType;

void generateMaze(CellType maze[][WIDTH]) {
    // 初始化迷宫为墙
    for (int i = 0; i < HEIGHT; i++) {
        for (int j = 0; j < WIDTH; j++) {
            maze[i][j] = WALL;
        }
    }

    // 使用随机数生成路径
    srand(time(NULL));
    int startX = rand() % (WIDTH - 2) + 1;
    int startY = rand() % (HEIGHT - 2) + 1;

    maze[startY][startX] = PATH;

    while (startX > 0 && startX < WIDTH - 1 && startY > 0 && startY < HEIGHT - 1) {
        int direction = rand() % 4; // 随机选择四个方向之一

        switch (direction) {
            case 0: // 上
                maze[startY - 1][startX] = PATH;
                startY--;
                break;
            case 1: // 下
                maze[startY + 1][startX] = PATH;
                startY++;
                break;
            case 2: // 左
                maze[startY][startX - 1] = PATH;
                startX--;
                break;
            case 3: // 右
                maze[startY][startX + 1] = PATH;
                startX++;
                break;
        }
    }
}

void printMaze(CellType maze[][WIDTH]) {
    for (int i = 0; i < HEIGHT; i++) {
        for (int j = 0; j < WIDTH; j++) {
            if (maze[i][j] == WALL) {
                printf("#");
            } else {
                printf(" ");
            }
        }
        printf("\n");
    }
}

int main() {
    CellType maze[HEIGHT][WIDTH];
    generateMaze(maze);
    printMaze(maze);

    return 0;
}

代码解释

  1. 迷宫定义:

    • 使用 CellType 枚举类型来表示迷宫中的单元格类型:WALL 代表墙,PATH 代表路径。
    • 使用二维数组 maze 来存储迷宫信息,WIDTHHEIGHT 宏定义了迷宫的宽度和高度。
  2. 生成迷宫:

    • generateMaze 函数负责生成随机迷宫。
    • 初始化迷宫为全墙。
    • 随机选择一个起始点,并将其设为路径。
    • 从起始点开始,随机选择四个方向之一,并将其相邻单元格设为路径,直到到达迷宫边界为止。
  3. 输出迷宫:

    • printMaze 函数负责输出生成的迷宫。
    • 遍历迷宫数组,如果单元格为墙,输出 #,否则输出空格。
  4. 主函数:

    • 定义 maze 数组来存储迷宫信息。
    • 调用 generateMaze 函数生成迷宫。
    • 调用 printMaze 函数输出迷宫。

程序运行结果

程序运行后会在控制台输出一个随机生成的迷宫。墙用 # 表示,路径用空格表示。每次运行程序都会生成不同的迷宫。

总结

该程序使用简单的随机数生成算法和二维数组来实现随机迷宫的生成。通过定义枚举类型、随机选择方向、并不断扩展路径,最终生成一个随机形状的迷宫。

您可以根据需要修改 WIDTHHEIGHT 宏定义来调整迷宫的尺寸。

希望本文能帮助您理解C语言随机迷宫生成程序的实现原理。

C语言随机迷宫生成程序:代码示例及详解

原文地址: https://www.cveoy.top/t/topic/jdQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录