> # ♻️ 资源
> **大小:** 102MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010517**](https://www.yuque.com/sxbn/ks/100010517)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87400294**](https://download.csdn.net/download/s1t16/87400294)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
## 安装
- Dark Maze1.0目录下exe直接运行即可
- 或编译code目录下MazeF4的源码(MazeF4为原名),将resource文件夹复制到编译后exe的同目录(QMediaPlayer库不支持音乐导入资源文件,这里使用的相对目录),QT命令行中cd到编译目录,执行命令windeployqt DarkMaze.exe
## 游戏操作
WASD控制移动方向
## 展示
**游戏加载:**
![](https://cdn.nlark.com/yuque/0/2024/jpg/2469055/1712539594470-0dcf04fa-150d-4225-a82e-4a05abedc344.jpg#averageHue=%23000000&id=ncGiA&originHeight=1080&originWidth=1920&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
**主界面:**
![](https://cdn.nlark.com/yuque/0/2024/jpg/2469055/1712539594593-7b7aabfd-8d89-4e80-9fde-c62c7c494c29.jpg#averageHue=%23928989&id=PNqCo&originHeight=1080&originWidth=1920&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
**设置界面:**
![](https://cdn.nlark.com/yuque/0/2024/jpg/2469055/1712539594878-468a6bca-6299-4122-88fc-7703542906d5.jpg#averageHue=%231e1e1a&id=oOzAB&originHeight=1080&originWidth=1920&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
**游戏界面:**
![](https://cdn.nlark.com/yuque/0/2024/jpg/2469055/1712539595023-f46502dd-3f3d-48b3-9698-379321e5d0bc.jpg#averageHue=%238b631b&id=t7Qgc&originHeight=1080&originWidth=1920&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
**算法演示界面:**
![](https://cdn.nlark.com/yuque/0/2024/jpg/2469055/1712539595199-171382df-7ee0-4a09-81fa-fcee9f3525c5.jpg#averageHue=%23a0a0a0&id=Ozfeo&originHeight=1080&originWidth=1920&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
## 算法解释
### 迷宫生成算法
基于生成树思想
迷宫高M,宽N
- 步骤
1. 迷宫是矩形的,将其每个格子视为一个点,上下左右视为边,即一张点为M*N,单点(除边)出度为4的图
2. 随机边的权值
3. 跑一边最小生成树
4. 就是这样,如果两个点相连,那么对应的两个格子是通路;如果两个点不想连,那么对应两个格子之间就是一面墙
- 注
1. 最小生成树有Prime和Kruskal,Prime是加点,用优先队列实现;Kruskal是加边,用并查集实现。这里最好用Prime,因为Prime能够从起点出发,获得一个以起点为根的树,并且能够得到每个点对应的父节点
2. 这样生成的迷宫格子与各自之间相邻的墙是一条线,如果想要相邻的墙是另外的格子的话,那么就需要扩大迷宫的长宽,任何相邻点都加上新格子,加上迷宫的边界就变为(2M+1)*(2N+1),这就是为什么本例生成的迷宫边长是**奇数**
### 寻路算法
- DFS
**递归**实现。可以说DFS是最拟合人走迷宫的算法,没遇到一个岔口向一个方向转弯,知道搜到尽头,回来换一个方向继续搜索。
- BFS
**队列**实现。每次把点周围相连的新点添加到队列,层层扩展,知道搜索到新点,适合求最短路,但不太适合迷宫寻路。
- 双向BFS
**队列+集合**实现。BFS的扩展,BFS是先将起点入队,双向BFS是两个队列,起点和终点开始同时搜索,可以一定程度减少搜索空间,难点在于判断结束条件——两个队列相交,这里使用Set记录终点搜索过的位置,起点队列查找该Set。
这种算法类似于人玩游戏迷宫时的思想。对于开上帝视角的玩家来说,中等程度的地图,大部分人会选择从终点开始倒着看,找到某一片区域,接着从起点开始正着走,达到这片区域。
- LCA最邻近公共祖先
**这并不是正规寻路算法**,而是基于迷宫生成方式的一个快捷路径算法。
因为本例的迷宫是一棵树,如果以起点为根节点,终点为一个子节点,那么找起点到终点的路径只需从终点向上查找祖先的过程,保存这条路径。如果寻找任意一点到终点的路径,那么先找到该点和终点的最邻近公共祖先,根据树的性质,该公共祖先点一点在起点到终点的路径上。所以路径即为,点->最邻近公共最先->终点。
之前说生成树最好用Prime就是这个道理,因为跑完Prime更容易获得每个点的父节点,只需以起点为初始点,没次加点的时候记录前面的点为父节点即可。
## QGraphicsWidget视图框架
本程序采用该视图框架
### 与QWidget体系的联系和区别
1. QGraphicsView继承QWidget,但是这两种体系之间的区别非常非常大,以至于很多相同的操作在这两种架构下的设置方法都不一样
2. 举个例子:在手机中当你横竖屏转换时,你肯定希望此时打开的应用程序也跟着横竖屏旋转。如果这个程序是一个Qt程序,则是指:Qt中的窗口需要可以旋转。 对于这一点:QWidget是做不到的。亦即一个QWidget窗口无法实现旋转(顶多是上边刷的内容旋转,但是窗口本身不会旋转) 但是QGraphicsItem则可以直接旋转。基于很多这样的理由,还是需要我们好好学学QGraphicsWidget体系的。
3. 其实在后者的场景中我们不仅仅可以添加Item项,更可以直接添加QWidget。这样的话,我们平时开发完全可以还按照QWidget体系那一套来写,只不过最后将他们都挨个加到scene中即可。
### 优势
1. 方便绘制并管理图形项
2. 可以检测图形的碰撞,叠加
3. 可以实现图形的拖动位置,缩放,旋转等一系列动画
## 成员分工
### 主要方向
| 成员 | 负责方向 |
| --- | --- |
| AllenTaken | 迷宫及迷宫算法 |
| Woodencross | 加载界面及PPT制作 |
| Joockie | 设置界面及图片加工 |
| Lionelsey | 主界面,音乐加载及页面整合 |
### 代码归属
- AllenTaken
```c
f4point.h/cpp 重载的点类
f4rect.h/cpp 重载的矩形类
f4edge.h/cpp 重载的边类
f4player.h/cpp 玩家类,继承QGraphicsItem
f4mazemap.h/cpp 基础迷宫生成类,内涵Prime,Kruskal等算法
f4mazemapplus.h/cpp 进阶迷宫类,继承F4mazemap类,对基础迷宫类进行二维扩展
f4mazescene.h/cpp 迷宫场景类,继承QGraphicsScene,展示迷宫游戏界面
f4mazedemo.h/cpp 迷宫算法演示类,继承QgraphicsScene,内涵DFS,BFS,双BFS,LCA等算法,展示寻路算法
```
- Woodencross
```c
myloading.h/cpp 进度条加载界面,继承QSplashScreen类
```
- Joockie
```c
f4setitem.h/cpp 设置界面图形项类,继承QGraphicsItem
f4setscene.h/cpp 设置界面场景类,继承QGraphicsScene
f4overall.h 声明全局变量头文件,对音量大小进行调控
```
- Lionelsey
```c
music.h/cpp 音乐播放类
myitem.h/cpp 主界面图形项类,继承QGraphicsItem
myscene.h/cpp 主界面场景类,继承QGraphicsScene
myview.h/cpp 游戏视图类,继承QGraphicsView
main.cpp 主函数
```
## 遇到的问题
- 关于QGraphicsView,QGraphicsScene,QGraphicsItem三级视图框架,
没错,这个框架有诸多优点,但是有一个缺点是一定的。**QG
没有合适的资源?快使用搜索试试~ 我知道了~
基于C++生成树思想的迷宫生成算法【100010517】
共353个文件
png:165个
dll:30个
jpg:28个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 165 浏览量
2023-01-28
10:28:10
上传
评论
收藏 102.16MB ZIP 举报
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100010517 基于C++生成树思想的迷宫生成算法,包含迷宫生成算法和寻路算法。
资源推荐
资源详情
资源评论
收起资源包目录
基于C++生成树思想的迷宫生成算法【100010517】 (353个子文件)
clean 0B
qrc_res.cpp 25.01MB
qrc_f4resource.cpp 23.1MB
f4mazedemo.cpp 9KB
f4setitem.cpp 7KB
f4mazescene.cpp 6KB
f4mazemap.cpp 4KB
f4setscene.cpp 4KB
myscene.cpp 3KB
myitem.cpp 3KB
moc_myview.cpp 3KB
f4mazemapplus.cpp 3KB
myview.cpp 2KB
myloading.cpp 2KB
f4player.cpp 1KB
music.cpp 1KB
main.cpp 793B
f4edge.cpp 371B
f4point.cpp 349B
f4rect.cpp 308B
opengl32sw.dll 15.25MB
Qt5Gui.dll 6.12MB
Qt5Widgets.dll 5.94MB
Qt5Core.dll 5.89MB
D3Dcompiler_47.dll 3.31MB
libGLESV2.dll 2.68MB
qwindows.dll 1.8MB
Qt5Network.dll 1.73MB
libstdc++-6.dll 1.47MB
Qt5Multimedia.dll 980KB
qtiff.dll 496KB
qwebp.dll 439KB
dsengine.dll 361KB
Qt5Svg.dll 351KB
qjpeg.dll 323KB
qwindowsvistastyle.dll 187KB
libgcc_s_dw2-1.dll 118KB
qgenericbearer.dll 88KB
qtaudio_windows.dll 82KB
libwinpthread-1.dll 78KB
qtmedia_audioengine.dll 65KB
qicns.dll 46KB
qsvgicon.dll 43KB
qico.dll 35KB
qgif.dll 33KB
qtmultimedia_m3u.dll 29KB
qsvg.dll 27KB
qtga.dll 26KB
qwbmp.dll 25KB
libEGL.dll 22KB
DarkMaze.exe 9.52MB
moc_predefs.h 9KB
f4mazedemo.h 1KB
myitem.h 1KB
f4setitem.h 1KB
f4mazescene.h 939B
f4player.h 784B
f4mazemap.h 780B
myloading.h 745B
f4mazemapplus.h 603B
myview.h 488B
myscene.h 466B
music.h 454B
f4setscene.h 382B
f4edge.h 291B
f4point.h 255B
f4rect.h 220B
f4overall.h 143B
myico.ico 1KB
bg2.jpg 2.68MB
bg2.jpg 2.68MB
sand01.jpg 988KB
sky06.jpg 587KB
demo4.jpg 524KB
background2.jpg 363KB
background2.jpg 363KB
demo2.jpg 354KB
bg3.jpg 336KB
bg3.jpg 336KB
timgLVFYSJAF.jpg 219KB
background.jpg 210KB
background.jpg 210KB
scare1.jpg 204KB
scare1.jpg 204KB
demo5.jpg 178KB
demo3.jpg 138KB
3D.jpg 107KB
demo1.jpg 67KB
bg1.jpg 63KB
584.jpg 63KB
bg1.jpg 63KB
1.jpg 53KB
setbg.jpg 49KB
setbg.jpg 49KB
u=2033293996,4267540186&fm=27&gp=0.jpg 24KB
u=3127291928,3704238571&fm=27&gp=0.jpg 21KB
u=2105012770,2310018063&fm=15&gp=0.jpg 15KB
LICENSE 1KB
宫殿入口.mb 1.39MB
README.md 9KB
共 353 条
- 1
- 2
- 3
- 4
资源评论
神仙别闹
- 粉丝: 2662
- 资源: 7639
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功