一、项目概述与编译环境
本次大作业选题为题目2,即小兔子找胡萝卜的迷宫问题,最终完成开发的游戏名为Caveman and Treasure(穴居人寻宝)。
该项目在windows下编译通过,所需环境为python3,编写GUI所用的库为pygame,在运行作业前,需要配置依赖项,即在main.py的路径下打开cmd,并运行:
pip install –r requirement.txt
配置完依赖项后即可运行游戏:
python main.py
为了方便测试不同搜索算法的效率,编写了脚本test.py进行测试:
python test.py --maze_size 10
设置为需要的迷宫大小,建议为5-25,否则可能超过递归上界。
二、问题的数学建模
由于迷宫的实质为一个由0,1构成的矩阵,其中1代表可行走的区域,0代表障碍物。由于穴居人生活区域中存在冰面,因此设置了随机道路中存在冰块,在冰块上穴居人会打滑,导致行走的代价*2。
在本问题中,设置穴居人初始位置处的值为10,宝藏处的值为1,则迷宫求解转化为该矩阵中10处到1处的带权连通路径。
三、算法实现
3.1 迷宫的创建
事实上,本次大作业中的一大难点在于迷宫如何创建,在实现过程中进行了如下尝试:
对每一小格随机添加障碍物
限定障碍物的形状,并在地图中随机放置障碍物,如(L型,H型)
但实际的创建结果均不理想(迷宫的样子不像迷宫:出现大量空白/障碍堆积现象)
最后经过查阅资料,采取递归回溯的算法生成迷宫,算法如下

这篇博客介绍了基于Python的迷宫游戏开发,包括使用pygame库创建GUI,通过递归回溯算法生成迷宫,以及实现深度优先搜索、宽度优先搜索、一致代价搜索和A*搜索四种解谜算法。文章提供了完整的源码和详细文档。
最低0.47元/天 解锁文章
1907

被折叠的 条评论
为什么被折叠?



