# mini_maze **Repository Path**: set-up-a-group/mini_maze ## Basic Information - **Project Name**: mini_maze - **Description**: C++课设,简易迷宫。 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-12 - **Last Updated**: 2021-08-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mini_maze ## 介绍 C++课设,简易迷宫。 ## 模块 ### main 主函数没啥好说的ovo ### mainwindow 图形界面,用了QPainter瞎搞出来了迷宫地图,人物是QPushButton。 ### controller 游戏流程控制器,或者说一个controller对象就是一局游戏,里面负责判断能不能走,有没有胜利。 ### generator 迷宫生成器,~~主要用冰茶姬~~,后来换了队友yy的神奇算法,用于生成随机迷宫,传入迷宫大小返回一个MazeMap对象。 算法如下: ```text 无论何时,假设所有可走的格子都是连通的。 进行以下步骤: 1. 建立二维数组作为迷宫地图,首先将所有格子置为墙。 2. 将起点设定为可走的格子。 3. 在这个格子上,随机面向一堵墙(注意判断边界) 4. 判断这堵墙对面是可走的格子还是墙,分两种情况: 1. 对面是可走的格子,因为我们设定所有可走的格子都连通,也就是说在站的位置一定有且唯一有一条路径通向对面的格子,为了保证答案的唯一性,我们不做任何操作。 2. 对面的墙,保证连通性,我们将面前的这堵墙打开变成可走的格子(对面的墙不变,保证随机性)。 5. 从第3步开始重复,直到迷宫完成为止。(注意这里“完成”并不是只要起点和终点连通,要保证对于所有格子在第4步的判定情况均为4.1,否则迷宫生成不完整,会有很多完全由墙组成的区块)。 ``` ### mazemap 封装起来包含长度,宽度,还有一个vector套vector的迷宫地图。用处不大,~~但是可以显得工作量很大。~~...~~然而最后迷宫写的是方的所以长宽都一样。。。~~ ### 其它 也许会有自动寻路,计时器之类的功能,不过做不完的话就先咕咕咯~ ~~做完其他内容之后有时间也咕咕了,好耶!~~