【问题标题】:How to generate perlin noise in pygame?如何在pygame中产生perlin噪声?
【发布时间】:2021-11-23 16:52:32
【问题描述】:

我正在尝试制作一款生存游戏,但我遇到了柏林噪音问题。我的程序给了我这个:

但我想要岛屿或河流之类的东西。

这是我的代码:

#SetUp#
import pygame, sys, random
pygame.init()
win = pygame.display.set_mode((800, 600))
pygame.display.set_caption('Isom')
x = 0
y = 0
s = 0
tilel = list()
random.seed(5843)
MAP = [random.randint(0, 1) for _ in range(192)]

#Tiles#
class tile():
    grass = pygame.image.load('Sprites/Images/Grass.png')
    water = pygame.image.load('Sprites/Images/Water.png')

#Loop#
while True:
    for key in pygame.event.get():
        if key.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    #World#
    for a in range(12):
        for b in range(16):
            if MAP[s] == 0:
                win.blit((tile.grass), (x, y))
            elif MAP[s] == 1:
                win.blit((tile.water), (x, y))
            x += 50
            s += 1
        x = 0
        y += 50
    x = 0
    y = 0
    s = 0
    #Update#
    pygame.display.update()

【问题讨论】:

  • 似乎您使用的分辨率非常低,因此您的柏林噪声基本上看起来像随机静态。如果您想要岛屿或河流之类的东西,那不是内置于 perlin 噪声中的,因此您必须自己弄清楚或查看其他示例。我想如果你产生了一些 3d 噪音,然后切断低于某个值的所有东西,那会让你得到你的岛屿(你必须玩弄参数,我建议制作一个带有滑块的 GUI 或让你搞砸的东西大约)。至于河流,也许你可以像随机布朗步行一样?老实说,这是非常开放的。

标签: python pygame perlin-noise


【解决方案1】:

我建议安装noise 软件包。
然后将noise.pnoise1(x) 用于 1 维 Perlin 噪声,noise.pnoise2(x, y) 用于 2 维 Perlin 噪声,noise.pnoise3(x, y, z) 用于 3 维 Perlin 噪声。

【讨论】:

    【解决方案2】:

    首先,批判性思维:Perlin 是一个流行的术语,但实际的“Perlin”噪声算法是旧的并且明显是方形对齐的。一般来说,最好使用 Simplex 类型的噪声。

    我建议 PyFastNoiseLite:https://github.com/tizilogic/PyFastNoiseLite 遵循安装说明,然后在此处镜像 FastNoiseLite 文档中的 C++ 示例:https://github.com/Auburn/FastNoiseLite/tree/master/Cpp 请务必注意其内部倍频,您可以使用 SetFrequency(f) 更改它

    您还可以使用 Python 噪声库来处理 Simplex 类型的噪声,噪声为 snoise2(x, y),但如果您想使用 snoise3(x, y, z),我会首先考虑这里的信息:https://www.reddit.com/r/proceduralgeneration/comments/qr6snt/countdown_timer_simplex_patent_expiration/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 2011-09-27
      • 2020-06-06
      • 1970-01-01
      • 2014-10-06
      • 2014-02-15
      • 2011-06-12
      相关资源
      最近更新 更多