Jak wygenerować szum perlina w pygame?

0

Pytanie

Staram się zrobić grę na przetrwanie, i mam problem z szumu perlina. Mój program daje mi to:

enter image description here

Ale chcę coś w rodzaju wysp lub rzek.

Oto mój kod:

#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

Najlepsza odpowiedź

0

Polecam zainstalować noise pakiet.
Następnie użyj noise.pnoise1(x) dla 1-wymiarowej szumu Perlina, noise.pnoise2(x, y) do 2-wymiarowej szumu Perlina i noise.pnoise3(x, y, z) dla 3-wymiarowej szumu Perlina.

2021-11-24 16:33:42
0

Po pierwsze, krytyczne myślenie: Perlin-popularne określenie, ale sam algorytm hałasu "Perlin" jest przestarzały i wyraźnie wyrównany do kwadratu. Lepiej, zazwyczaj użyć hałas simplex kolekci typu.

Proponuję PyFastNoiseLite: https://github.com/tizilogic/PyFastNoiseLite Postępuj zgodnie z instrukcjami, a następnie powtórz przykład C++ w dokumentacji FastNoiseLite tutaj: https://github.com/Auburn/FastNoiseLite/tree/master/Cpp należy zwrócić uwagę na jego wewnętrzne mnożenie częstotliwości, które można zmienić za pomocą SetFrequency(f)

Można również korzystać z biblioteki hałasu Python dla hałasu simplex kolekci typu z hałasem snoise2(x, y) chociaż, jeśli chcesz użyć snoise3(x, y, z) Ja bym najpierw przeglądał informacje tutaj: https://www.reddit.com/r/proceduralgeneration/comments/qr6snt/countdown_timer_simplex_patent_expiration/

2021-11-24 20:37:26

W innych językach

Ta strona jest w innych językach

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