Como gerar perlin noise em pygame?

0

Pergunta

Eu estou tentando fazer um jogo de sobrevivência e eu tenho um problema com o perlin noise. Meu programa dá-me este:

enter image description here

Mas eu quero algo como ilhas ou rios.

Aqui está o meu código:

#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-noise pygame python
2021-11-23 16:52:32
2

Melhor resposta

0

Eu recomendo instalar o noise pacote.
Em seguida, use noise.pnoise1(x) para 1 dimensional Perlin noise, noise.pnoise2(x, y) para 2 dimensional Perlin noise, e noise.pnoise3(x, y, z) para 3 dimensões Perlin noise.

2021-11-24 16:33:42
0

Primeiro, o pensamento crítico: Perlin é um termo popular, mas o real "Perlin" ruído algoritmo é antigo e visivelmente quadrados alinhados. Melhor, como regra geral, o uso do Simplex tipo de ruído.

Eu sugiro que PyFastNoiseLite: https://github.com/tizilogic/PyFastNoiseLite Siga as instruções de instalação e, em seguida, o espelho, a exemplo de C++ no FastNoiseLite documentação aqui: https://github.com/Auburn/FastNoiseLite/tree/master/Cpp certifique-se de anotar a sua freqüência interna de multiplicação, que você pode mudar com o SetFrequency(f)

Você também pode usar o Python ruído biblioteca para Simplex tipo de ruído, com o ruído snoise2(x, y) no entanto, se você deseja usar snoise3(x, y, z) Em primeiro lugar gostaria de considerar a informação aqui: https://www.reddit.com/r/proceduralgeneration/comments/qr6snt/countdown_timer_simplex_patent_expiration/

2021-11-24 20:37:26

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................