[内附完整源码和文档] 基于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

智能推荐

【案例】9月13-14日,“三赋专项行动”、“李晴”百度百科通过-程序员宅基地

文章浏览阅读157次。在这里说明一下:百度百科初始版本不可能那么高大全,都是先做一个相对简单的初始版本,后面逐渐完善。如果你要按自己的意思自定义内容,那么推荐做全球百科,因为它不要求参考资料(但是审核员会校审信息的真实性,所以一定要写真的,不要写假的)。我们主要做项目类百科,含百度百科、搜狗百科、全球百科、抖音百科。如果你有自己的品牌、公司、民营非企业、社会组织、创业项目,并且想提升它的知名度、打造名牌效应,那就做一个百科吧!无论抖音百科、搜狗百科、全球百科抑或是别的什么百科,都无可比较。

Unity 按下Play键后,Scene View里面一切正常,但是Game View中什么都没有 -- Camera Clear Flags的设置_gameviwer无法按键-程序员宅基地

文章浏览阅读294次。在Scene View中可以看到球体,但是Game View什么都看不到。最后找到的原因是,我使用的shader是Skybox/Panorama, 需要把Main Camera的Clear Flags设置成Don’t clear,就可以在Unity Editor中看到了正确的内容。但是同样设置为Don’t clear,部署到Quest 2时,又会出现花屏(就像之前电视机那种黑白花屏),我又把Main Camera的Clear Flags设置成为了skybox。把它变成skybox就好了。_gameviwer无法按键

CANTX、CANRX与CANH、CANL详解,以及转换方法_canh是tx嘛-程序员宅基地

文章浏览阅读4.2w次,点赞18次,收藏57次。从名称上来看,CANTX和CANRX是CAN控制芯片的发送管脚(CANTX)和接收管脚(CANRX)。完整的CAN电路是由CAN控制器和CAN收发器组成的,二者之间一般通过TTL电平的收发信号(CANRX、CANTX)连接,由CAN收发器将CANTX的TTL信号转换为CAN规范差分信号输出、同时接收差分线上的实际信号并转换为TTL信号输出到CANRX管脚上。CAN收发器与CAN控制器的CANT_canh是tx嘛

51单片机数字电子钟设计(数电课设,含时间显示、校准、整点报时、闹钟功能)_51单片机电子时钟-程序员宅基地

文章浏览阅读3.4w次,点赞72次,收藏925次。51单片机数字闹钟_51单片机电子时钟

HTML+CSS+JavaScript网页特效源代码(复制代码保存即可使用)_var speednormal-程序员宅基地

文章浏览阅读1w次,点赞196次,收藏842次。网页特效源代码(HTML+CSS+JavaScript)网页特效源代码_var speednormal

VMware虚拟机按照MacOS的一些可能的问题_sierra custom installer"上没有足够的可用空间来进行安装-程序员宅基地

文章浏览阅读347次。一直对MacOS的系统非常感兴趣,最近就鼓捣了一台MacOS的虚拟机,写一篇文章来简单记录一下安装过程中的遇到的问题。_sierra custom installer"上没有足够的可用空间来进行安装

随便推点

运维测试_运维的测试方法-程序员宅基地

文章浏览阅读1.9k次。一:填空题:1:Apache若采用prework模式,则是异步阻塞的。2.可启动服务器网络服务的命令:systemctl restart network3.Centos7,关闭防火墙服务的命令是:systemctl stop firewalld4:不知道nginx监听哪个端口,可以这么做:netstat -tnlp | grep nginx或者:在这里插入代码片地址..._运维的测试方法

OCP 11G 实验环境安装文档 ( RedHat5.5 + Oracle11g )-程序员宅基地

文章浏览阅读743次。RedHat5.5 linux下Oracle11g软件安装一、配置虚拟机为了创建和配置虚拟机,你需要添加硬件设备如磁盘和cpu,在你开始安装之前,创建一个windows目录作为存放虚拟机的目录目录不一定是E:\盘,找一个自己磁盘空间比较大的硬盘就可以。E:\>mkdir stu1(创建目录)双击桌面上的虚拟机工作站图标以打开虚拟机1.PressCTRL-..._oracleasm-support-2.1.8-1.el5.x86_64.rpm

博通wifi驱动_博通wifi芯片控制软件-程序员宅基地

文章浏览阅读564次。很早之前自己的笔记,想想还是记录到网上吧注册 7611 static int __init 7612 dhd_module_init(void) 7613 { 7614 int err; 7615 int retry = POWERUP_MAX_RETRY; 7616 7617 printk("%s: in\n", __FUNCTION__); 7618 7619 DHD_PERIM_RADIO_I.._博通wifi芯片控制软件

视频教程-从小白入门C语言-C/C++-程序员宅基地

文章浏览阅读355次。从小白入门C语言 黄强老师,国家软件设计师,软件开发工程师,项目经理、产品经..._从小白入门c++黄强

4020基于链地址法的散列表的插入_第6关:基于链地址法的散列表的插入-程序员宅基地

文章浏览阅读1.2k次。描述请写出在散列表中插入关键字为k的一个记录的算法,设散列函数为H,H(key)=key%13,解决冲突的方法为链地址法。输入多组数据,每组三行,第一行为待输入的关键字的个数n,第二行为对应的n个关键字,第三行为需要插入的关键字k。当n=0时输入结束。输出每组数据输出用链地址法处理冲突的散列表。输入样例 151 4 2 3 5642 5 8 15180输出样例 101 12 23 34 45 56 678910111201._第6关:基于链地址法的散列表的插入

每周一道算法题011:最长公共子串-程序员宅基地

文章浏览阅读157次。问题:求以下几组单词的最长公共子串的长度1.fish和fosh2.fish和hish3.fish和vista思路:可以用表格法,横纵坐标分别是两个单词,如果字符相同,就用左上角的数字加1,最后取表格中的最大值。解答:php:<?php// 找出两个单词的最长公共子串function findLongestSubString($word1, $word2){ $le..._公共子串算法题答案