[内附完整源码和文档] 基于python实现的迷宫游戏_迷宫游戏python源码-程序员宅基地

技术标签: 收集毕设和课设资源  

一、项目概述与编译环境
本次大作业选题为题目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型)

但实际的创建结果均不理想(迷宫的样子不像迷宫:出现大量空白/障碍堆积现象)

最后经过查阅资料,采取递归回溯的算法生成迷宫ÿ

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LEMFOooO/article/details/107508398

智能推荐

如何处理好前后端分离的 API 问题_后端api和client端api 需要放在一起吗-程序员宅基地

文章浏览阅读1.1k次。API 都搞不好,还怎么当程序员?如果 API 设计只是后台的活,为什么还需要前端工程师。作为一个程序员,我讨厌那些没有文档的库。我们就好像在操纵一个黑盒一样,预期不了它的正常行为是什么。输入了一个 A,预期返回的是一个 B,结果它什么也没有。有的时候,还抛出了一堆异常,导致你的应用崩溃。因为交付周期的原因,接入了一个第三方的库,遇到了这么一些问题:文档老旧,并且不够全面。这个问题相比于没有文档来说,愈加的可怕。我们需要的接口不在文档上,文档上的接口不存在库里,又或者是少了一行关键的代码。对于一_后端api和client端api 需要放在一起吗

初学Flutter Each child must be laid out exactly once-程序员宅基地

文章浏览阅读9k次。根据Flutter 中文网敲代码class RandomWords extends StatefulWidget { @override State<StatefulWidget> createState() { // TODO: implement createState return new RandomWordState(); }}clas..._each child must be laid out exactly once

opencv数据结构CvScalar-程序员宅基地

文章浏览阅读1.4w次,点赞7次,收藏10次。opencv数据结构CvScalarhttp://www.gbs-cqh.net/cvscalar/ c接口中定义为结构体CvScalar;c++接口中定义为类Scalar。下面是c接口中的定义:这个 CvScalar就是一个可以用来存放4个double数值的数组;一般用来存放像素值(不一定是灰度值哦)的,最多可以存放4个通道的。typedef struct CvScala_cvscalar

.Net学习难点讨论系列6 - .Net中对字符串处理的方法_net 6 字符串枚举-程序员宅基地

文章浏览阅读270次。此文章在aierong 的http://www.cnblogs.com/aierong/archive/2005/04/26/145617.html基础上稍加改动。感谢原作者。 .Net提供了将数值、枚举或日期时间等数据类型表示为字符串的方法(依赖于给ToString()方法传入参数),也提供了(包括自定义解析过程)将字符串表示为某种类型的方法(类/对象名.Parse(string))。 格式化由格式说明符字符的字符串控制,该字符串指示如何表示基类型值;或者怎样将_net 6 字符串枚举

一文了解路由平台的 Cisco IOS 和 IOS XE 命名约定,看这篇就够了_ios xe system 在哪些设备-程序员宅基地

文章浏览阅读5k次。文章目录概述命名约定一致性IOSCisco IOS XE 软件版本 16 和 17IOS XE 软件版本 3SIOS XE Train 标识符物理平台虚拟平台IOS经典Cisco IOS 软件版本 15IOS 经典列车标识符物理平台概述命名约定一致性对某事物进行任何命名约定的全部意义在于使事物保持一致和统一。遵守约定可为专业人员提供基本规则,让他们坚持已知的内容,为现在和未来的员工以及使用思科产品的人员提供清晰简洁的信息。本文概述了Cisco 路由平台的 Cisco IOS 命名约定,包括 IOS _ios xe system 在哪些设备

京东的宝贝商品主图视频如何无损的保存下来_京东主图无水印视频怎么下载?-程序员宅基地

文章浏览阅读3.3k次。一起来看看小编的演示操作,利用载图助手可以批量将京东上的宝贝商品主图及主图视频同时导到自己的电脑上。您也可以安装个载图助手然后跟着小编的操作方法一起操作试试。如果你正好在京东平台挑选商品,然后要把喜欢的商品图片和视频给导出来,这时您把该商品链给复制起来。然后运行电脑上已安装好的最新版本载图助手,将链接导到进去,多个链接以上下一个个排列。挑选完商品后,在软件首页的下载功能选项中,将下载主图、同时下载视频,两项打勾,其它根据需要选择,批量下载分类保存功能,推荐你勾选,这样可以方..._京东主图无水印视频怎么下载?

随便推点

云南师范大学泰语718量子力学831普通物理考研真题-程序员宅基地

文章浏览阅读358次,点赞10次,收藏10次。云南财经大学805马克思主义基本原理概论考研真题2017-2021[缺2020]云南财经大学704毛中特考研真题2017...云南师范大学333教育综合考研真题2010--2023年[含答案]云南师范大学812初等教育学考研真题2012--202...云南师范大学718量子力学考研真题2017--2020年云南师范大学831普通物理考研真题2017--2020年...云南师范大学泰语考研真题考研真题2016--2019年...云南财经大学432统计学考研真题应用统计学考研真题。云南师范大学泰语考研真题。

hive 分页实现_hive limit 分页-程序员宅基地

文章浏览阅读3k次。1.支持limit n,m语法的hive版本#!/bin/bashcnt=$(set hive.cli.print.header=false;hive -e "select count(*) from exam.userbehavior;")echo "总记录数: $cnt 条"#每页10条pageSize=10pageNum=`expr $cnt + $pageSize - 1 / $pageSize`echo "总页数: $pageNum 页"for((a=0;a<=$pa_hive limit 分页

服务器装系统bios设置方法,比较常见的BIOS设置方法实现U盘成功装系统-程序员宅基地

文章浏览阅读413次。在以往的光盘装系统中,需要调整第一启动项为光驱启动,而如今,U盘装系统已经成为一种主流,将第一启动项改为U盘启动是用户首要的操作任务,但是不同电脑不同版本的BIOS设置的方法不一样,下面就让高手来教大家一种比较常见的BIOS设置方法,实现U盘成功装系统。首先,在开机时按下Delelte键可以进入直接BIOS设置程序。当然要注意到不同类型的机器进入BIOS设置程序的按键不同,并且有的在屏幕上给出提示..._服务器bios设置传统模式u盘安装系统

[实战] 朴素贝叶斯分类器进行垃圾邮件过滤_朴素贝叶斯分类器和svm在垃圾邮件过滤任务中-程序员宅基地

文章浏览阅读1.7k次。我们已经讲解过朴素贝叶斯分类器的基本原理和实现:动手实现朴素贝叶斯分类器进行文档分类在此基础上,我们实现垃圾邮件的过滤,数据为50封txt邮件(1)将text文本文件,分成单词列表使用正则表达式,使用除单词和数字外的任意字符串为分隔符并删除长度小于3的字符串def textParse(bigString): import re listOfTokens = re.spli..._朴素贝叶斯分类器和svm在垃圾邮件过滤任务中

cvs 常用命令记录-程序员宅基地

文章浏览阅读130次。//z 纯粹自己备忘//z 9/19/2011 1:22 [email protected] 命令的形式:cvscvs-options subcommand subcommand-options查看帮助:cvs-H subcommandcvs status -h检出文件:cvscheckout mymodule更新cvs..._cvs 回滚

AudioTrack 播放wav音频文件_audioformat.encoding.pcm_float不生效-程序员宅基地

文章浏览阅读595次。我们要想对wav文件格式操作,我们就要了解wav的文件格式https://blog.csdn.net/qq_15255121/article/details/115168456通过上面我们可以知道第8到11字节 代表当前是wave格式也就是wav格式第20-21字节 代表当前的音频数据是什么格式 如果是1代表是pcm格式第24-28字节,代表当前的采样率第34-35字节,代表当前的采样大小(位深)第44字节开始,是我们真是的数据通过上面的分析我们可以知道,wav只是把p._audioformat.encoding.pcm_float不生效

推荐文章

热门文章

相关标签