Come generare rumore di perlin in pygame?

0

Domanda

Sto cercando di fare un gioco di sopravvivenza e ho un problema con il rumore di perlin. Il mio programma mi dà questo:

enter image description here

Ma voglio qualcosa come isole o fiumi.

Ecco il mio codice:

#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

Migliore risposta

0

Vi consiglio di installare il noise pacchetto.
Quindi utilizzare noise.pnoise1(x) per 1 dimensionale rumore di Perlin, noise.pnoise2(x, y) per 2 dimensionale rumore di Perlin, e noise.pnoise3(x, y, z) per 3 dimensionale rumore di Perlin.

2021-11-24 16:33:42
0

Primo, il pensiero critico: Perlin è un termine popolare, ma il vero e proprio "Perlin" algoritmo del rumore è vecchio e visibilmente piazza-allineati. Meglio, come regola generale, utilizzare un Simplex tipo di rumore.

Suggerisco PyFastNoiseLite: https://github.com/tizilogic/PyFastNoiseLite Seguire le istruzioni di installazione, quindi specchio C++ esempio nel FastNoiseLite documentazione qui: https://github.com/Auburn/FastNoiseLite/tree/master/Cpp Essere sicuri di notare la sua frequenza interna di moltiplicazione, che è possibile modificare con SetFrequency(f)

È inoltre possibile utilizzare il Python rumore biblioteca Simplex tipo di rumore, con il rumore snoise2(x, y) tuttavia, se si desidera utilizzare snoise3(x, y, z) Vorrei in primo luogo prendere in considerazione le info qui: https://www.reddit.com/r/proceduralgeneration/comments/qr6snt/countdown_timer_simplex_patent_expiration/

2021-11-24 20:37:26

In altre lingue

Questa pagina è in altre lingue

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