这是一个用 C++ 编写的基本迷宫游戏的代码实现,允许用户探索迷宫并找到出口。

#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>

using namespace std;

// 定义迷宫的大小
const int SIZE_1 = 9;
const int SIZE_2 = 15;
const int SIZE_3 = 24;

// 定义迷宫中的元素
const char WALL = '■';
const char PATH = ' '; 
const char VISITED = '.';

// 定义迷宫难度等级
enum DifficultyLevel {
    EASY = 1,
    MEDIUM = 2,
    HARD = 3
};

// 定义迷宫类
class Maze {
private:
    vector<vector<char>> maze;
    int size;
    int startX, startY;
    int endX, endY;
    int difficulty;

public:
    Maze(int size, int difficulty) : size(size), difficulty(difficulty) {
        maze.resize(size, vector<char>(size, PATH));
        generateMaze();
        setStartAndEnd();
    }

    void generateMaze() {
        srand(time(NULL));

        // 随机生成墙体
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                if (rand() % difficulty == 0) {
                    maze[i][j] = WALL;
                }
            }
        }
    }

    void setStartAndEnd() {
        // 设置起点和终点
        startX = 0;
        startY = rand() % size;

        endX = size - 1;
        endY = rand() % size;

        maze[startX][startY] = PATH;
        maze[endX][endY] = PATH;
    }

    void printMaze() {
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                cout << maze[i][j] << ' '; 
            }
            cout << endl;
        }
        cout << endl;
    }

    bool solveMaze() {
        return solve(startX, startY);
    }

private:
    bool solve(int x, int y) {
        if (x == endX && y == endY) {
            return true;
        }

        if (isValid(x, y)) {
            maze[x][y] = VISITED;

            if (solve(x + 1, y) || solve(x, y + 1) || solve(x - 1, y) || solve(x, y - 1)) {
                return true;
            }

            maze[x][y] = PATH;
        }

        return false;
    }

    bool isValid(int x, int y) {
        return x >= 0 && x < size && y >= 0 && y < size && (maze[x][y] == PATH || maze[x][y] == VISITED);
    }
};

int main() {
    int difficultyLevel;

    cout << "请选择难度等级(1、2、3): ";
    cin >> difficultyLevel;

    int mazeSize;
    switch (difficultyLevel) {
        case EASY:
            mazeSize = SIZE_1;
            break;
        case MEDIUM:
            mazeSize = SIZE_2;
            break;
        case HARD:
            mazeSize = SIZE_3;
            break;
        default:
            cout << "无效的难度等级!" << endl;
            return 0;
    }

    Maze maze(mazeSize, difficultyLevel);

    cout << "生成的迷宫为:" << endl;
    maze.printMaze();

    cout << "开始解迷宫..." << endl;
    if (maze.solveMaze()) {
        cout << "解迷宫成功!" << endl;
    } else {
        cout << "解迷宫失败!" << endl;
    }

    cout << "最终迷宫为:" << endl;
    maze.printMaze();

    return 0;
}

此代码实现了一个基本的迷宫游戏。用户可以选择难度等级,并根据选择的难度等级生成相应大小的迷宫。程序会自动生成起点和终点,然后使用递归回溯算法解迷宫。解迷宫过程中,每走一步都会显示出整个迷宫和行动路径。最后,程序会打印出最终的迷宫状态。

你可以按照以下步骤进行优化:

  1. **添加得分系统:**根据所用时间和迷宫难度等级计算得分,并将其显示在游戏结束时。
  2. **提供过程回放:**记录下每个步骤的迷宫状态,并在游戏结束后提供过程回放功能。
  3. 增加图形界面: 使用图形库(例如 SDL 或 SFML)来创建一个更具吸引力的游戏界面,并用图像来表示墙体和路径。
  4. 加入更多迷宫生成算法: 使用更高级的迷宫生成算法,例如 Prim 算法或 Kruskal 算法,来生成更复杂和更有趣的迷宫。
  5. 使用多线程: 如果需要更高效的游戏运行速度,可以使用多线程来处理迷宫生成、路径求解和渲染等任务。

通过添加这些功能,你可以创建一个更加丰富多彩的迷宫游戏。

C++ 迷宫游戏:实现迷宫探索与路径求解

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

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