迷宫系列(一) - 随机迷宫生成算法

本文介绍了如何使用Scratch编程实现基于prime算法的随机迷宫生成。通过创建一个网状结构,随机选择空白格打通墙壁,最终生成一个无封闭空间、处处连通的迷宫。详细步骤包括初始化、生成基础模板、遍历并打通墙壁,以及最终的迷宫渲染。
摘要由CSDN通过智能技术生成

迷宫是许多游戏都会出现的经典场景,那么,如何用代码生成一个随机的迷宫呢?

本次我们用Scratch实现迷宫随机生成,基于prime算法,生成一个没有封闭空间,处处连通的迷宫。

具体的思路是这样的:

  1. 生成一个网状的结构,空白的地方用0表示,存在墙的地方用1表示,如图所示:在这里插入图片描述
  2. 随机选一个空白格,将其上下左右的墙加入到【被访问的墙列表】,同时将该空白格加入【已访问的空白格列表】
  3. 重复执行以下步骤直到【被访问的墙列表】为空:
    1)在【被访问的墙列表】随机选择一项,记为A
    2)如果这面墙两边的空白格中有一个空白格还没有被加入【已访问的空白格列表】,那么打通这面墙(即将1改写为0),然后将这个还没有被加入【已访问的空白格列表】的空白格加入【已访问的空白格列表】,并将其上下左右的墙加入到【被访问的墙列表】
    3)从【被访问的墙列表】中删除A

此时,所有空白格都被加入【已访问的空白格列表】,并且生成一个处处连通,没有封闭空间的随机迷宫:在这里插入图片描述
程序实现如下:

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值