所在位置:首页 > 手游攻略 > 一条飞龙?听说随机地图的生成方案简单粗暴的地图生成

一条飞龙?听说随机地图的生成方案简单粗暴的地图生成

发布时间:2022-11-28 21:07:07来源:网络整理浏览:25

在标题图片中,我用完了……一条飞龙?

听说最近知乎上随机地图很火。

一组随机地图生成方案

简单粗暴的地图生成

我和上面的比起来还差得很远,甚至我建的东西只能说看起来像个地图,不过也只是个png,没有任何可穿越路径之类的附加功能。

买一盒1000块(准确地说是36*28=1008块)的拼图回家玩。

工具:PS(用于构建单位)、Numpy库的矩阵。

一,地牢。

工作原则:

①图板分为内圈和外圈吃鸡图生成器,并给出起始有效格子范围(限于内圈)和步数(如256)。

②每一步,向上、下、左、右任意方向移动1,将空白单元格变为有效单元格(矩阵元素运算)。对于已经是有效格子的位置,再重复一遍。向任一方向移动的概率为 0.25,因此整个路径倾向于围绕地图板盘旋。如果偏差过大,达到边界,则整个生成过程终止。

③检查每个格子的四连通性,将相邻的有效格子连接起来。

例子:

没有更复杂的...

核心代码:

def crt(i,j):

a=b=15 #矩阵行和列的范围从0到30,15使得起始位置正好在中心

对于范围内的 e(i,j):

f=(0,3)

如果 f==0:

b=b-1

如果 f==1:

一=一+1

如果 f==2:

b=b+1

如果 f==3:

a=a-1

if a29: #map board 31*31

休息

如果 b29:

吃意点麻辣鸡架门脸图_郭美美吃男人鸡吧图_吃鸡图生成器

休息

.blit(m0,(16+a*32,16+b*32))

d1[a,b]=1

这种以单字母顺序命名变量的方式,被《和游戏开发指南》的作者Al痛恨,点名批评。这套代码是之前做的,懒得改了。这种习惯无异于在日后埋下地雷,千万不要吸取教训。

二、海岛。

有16个预制单元,

它仿照 War3 地图纹理,请参见

魔兽争霸3的自动拼接地形渲染方法- - 博客园

魔兽自动地图组件绘制原理 - 专栏 - CSDN博客

工作原则:

①用62*62的矩阵,每个格子2行2列(后来才知道四元数数组可以拆,甚至是普通的31阶矩阵。。。)。

②关键是对于任意一个格子,将左上格子的右下角赋给左上格子,左格子的右下角赋给格子的左下角,上格子的右下角赋给网格的右上角...让交界处的所有相邻数据相等。(真是笨办法,直接调用就行了)

③直接产生的会是均匀的噪声,所以需要一些技巧: 1. 使以圆心为圆心,设定值为半径的圆外的土地产生概率急剧下降(比如80%的机会,0为任何陆地 1) 成为海洋。2.按照设定的比例擦除单格孤岛和水坑。只要外面周围的值相等(0或1),里面也会一样。

④让草地的0部分变成2,创造出比陆地部分更小的草地。

例子:

3.黑白世界地图。

先给大家介绍一下单位吧,不是都用过的。

可以发现每个格子对应一个八元数组。吸取上一课的教训,使用四元素数组(左下、右下、右上、右下)就足够了。

这次0为空白,1为有效。我必须做几件事:

① 放心地随机生成。

②填湖割岛,原理同上。如果检测到合格的格子吃鸡图生成器,那么大概率四个连接会统一成land/sea,小概率也会统一外圈。

③去掉边缘,剪掉四个角。让八条直线以外的区间内的数值归零。

④苦,这是工作量的大头!我必须将值与单元格的形状相匹配,并且有 256 个可能的八位字节。我不会对自己如此苛刻,并且会以一些看起来超自然的边界为代价简单地退化很多。不过一般都能糊弄~

例子:

奇怪对不对,捂脸(/ω\)