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

标签 python noise

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

数组-(手动输入“地形”)

enter image description here

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

这里

现在,我想在列表中生成带有某种噪音的“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']

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

关于python - 如何使用噪声生成基于二维图 block 的地形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69793091/

相关文章:

python - 按百分比随机划分并存储 SQL 表

python - 如何使 python 脚本在 bash 和 python 中都可以通过管道传输

matlab - 使用 Matlab 生成振幅在 [-1 1] 之间的白噪声

android - 从记录的加速度计/陀螺仪数据中去除噪声

python - 使用opengl进行平铺渲染

python - 如何简化 if 语句 yes

python - Django 和 BeautifulSoup - 在每个页面加载时运行views.py?

unity3d - unity AudioSource.Play 有噪音

android - 在 Android 中查询噪音水平

algorithm - 从小的二值图像中去除异常像素