有很多不同的方法可以做到这一点;这是用于精灵和邮票还是2D列表和笔。无论哪种方式,主要组件是算法。 这个 维基百科页面提供了有关迷宫生成如何工作以及几种不同算法的详细信息。 The Coding Train还有一个视频系列 这里 在那里他使用上面的2D列表方法创建了一个迷宫生成器(但是这个方法稍微有点困难)。无论哪种方式,最好的办法是查看其他人制作的示例,弄清楚它们是如何工作的,并尝试重新创建它们或使它们更好。 这里的 入门的好地方。
它实际上可以用划痕构建,但取决于你在寻找什么。我假设你想要像老式的8位游戏一样生成一个简单的迷宫,比如巨石破折号。
首先确定迷宫的大小:例如5 x 5块。 如果你想创建一个迷宫,想象一下在纸上画一个网格。块可以是“空的”或填充。我们的迷宫可以用数字表示。空块由0表示,填充块由1表示。
如果所有块都为空,您可以将此矩阵可视化:
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0
在保持内部空的同时添加边框墙看起来像:
1,1,1,1,1, 1,0,0,0,1, 1,0,0,0,1, 1,0,0,0,1, 1,1,1,1,1
使用“list”变量来存储此信息最适合MIT Scratch的可能性。
在这种情况下,您需要了解迷宫中的每个块都由上面矩阵中的位置表示。您可以在一张纸上以网格/矩阵的形状和大小绘制数字作为参考,以便记住每个块的位置(如果这样更容易)。
我们还需要了解迷宫与舞台大小的关系。默认临时项目的宽度和高度(以像素为单位)为480x360。
将5×5迷宫分成480/5 = 96宽度和360/5 = 72高度的块。换句话说,基于全屏迷宫,块需要是96x72像素。
下一步,创建一个表示迷宫块可视化的精灵。我会把我们的块精灵的第一个“服装”保持为空,并创建一个完全填充的块来代表迷宫的墙壁。
在那之后,我们需要以编程方式创建我们的迷宫。我举了一个例子,你可以探索一个迷宫块的随机绘图: https://scratch.mit.edu/projects/278731659/
(您可以更改行和列值以查看它是否可以放大,但请记住块精灵可以拥有的克隆数量限制为300)
这只是为了让您入门,绝不是一个完整的解决方案。我希望这能帮助你思考正确的方向。
您可以通过添加一个函数来探索和更正我们随机绘制的网格,以生成从位置x到位置y的可行走路径,从而使其更加先进。例如,您可以编程的规则是:网格中的每个空位置应该在其上方,下方,左侧和右侧的空间中至少有两个其他空位置。
划痕真的毫无意义!一个简单的迷宫生成器可以让您使用笔绘制预定义的形状(如长走廊或交叉点)。您还应该制作(不可见)方块来分隔所有内容并让程序在方块中绘制。
我稍后会添加一个链接,指向包含代码的示例项目。