如何使用噪声生成基于二维图块的地形?

How to use noise to generate 2d tile based terrain?

我正在尝试在 pygame 中制作一个基于 2d 图块的游戏。我已经实现了一种算法,将二维数组中的字符转换为图块,其位置来自数组中字符的行和列。例-

阵列-(手动输入“地形”)

游戏-(数组中的g和s分别对应草和石头。)

这里

现在,我想生成带有某种噪声的列表中的“G”,因此我可以进一步实现它以无限生成。我在这方面看到的一些文档真的很难理解:(。那么我如何使用噪音自动生成地形中的“G”?谢谢!

我建议逐列生成您的世界。我认为这是某种从左到右的平台游戏,这更有意义。

下面是一个小片段,向您展示了这样做的可能的简单逻辑。 S 的数量是固定的,G 可以在每个新步骤中变化 +1/0/-1。最后一行是转换成你的行格式显示:

import random
l = 9 # world height
g = 2 # initial number of G
out = []
for i in range(15):
    g += random.randint(-1, 1)
    g = max(0, min(g, l))
    s = ' '*(l-g-1)+'G'*g+'S'
    out.append(s)
worldArray = [''.join(s) for s in zip(*map(list, out))]

示例:

['               ',
 '               ',
 '               ',
 '               ',
 '               ',
 'G   G         G',
 'GG GGG   G GGGG',
 'GGGGGGG GGGGGGG',
 'SSSSSSSSSSSSSSS']

现在最重要和棘手的部分是找到合适的参数来随机改变世界。例如,您可能希望或多或少频繁地改变海拔高度(然后使用例如非均匀随机函数)