Comment générer du bruit de perlin dans pygame?

0

La question

Je suis en train de faire un jeu de survie et j'ai un problème avec le bruit de perlin. Mon programme me donne ceci:

enter image description here

Mais je veux quelque chose comme les îles ou les rivières.

Voici mon code:

#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

La meilleure réponse

0

Je recommande l'installation de la noise package.
Ensuite, utilisez noise.pnoise1(x) pour 1 dimensions bruit de Perlin, noise.pnoise2(x, y) pour les 2 dimensions bruit de Perlin, et noise.pnoise3(x, y, z) pour les 3 dimensions le bruit de Perlin.

2021-11-24 16:33:42
0

Tout d'abord, la pensée critique: Perlin est un terme populaire, mais le "Perlin" algorithme de bruit est vieux et visiblement carrés alignés. Mieux, en règle générale, l'utilisation d'un Simplex de type bruit.

Je suggère PyFastNoiseLite: https://github.com/tizilogic/PyFastNoiseLite Suivez les instructions d'installation, puis le miroir de l'exemple C++ dans le FastNoiseLite documentation ici: https://github.com/Auburn/FastNoiseLite/tree/master/Cpp assurez-vous de la note interne de la fréquence de la multiplication, que vous pouvez changer avec SetFrequency(f)

Vous pouvez également utiliser le Python bruit de la bibliothèque pour Simplex de type de bruit, le bruit snoise2(x, y) si vous souhaitez utiliser snoise3(x, y, z) Je voudrais tout d'abord considérer l'info ici: https://www.reddit.com/r/proceduralgeneration/comments/qr6snt/countdown_timer_simplex_patent_expiration/

2021-11-24 20:37:26

Dans d'autres langues

Cette page est dans d'autres langues

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