Pygame'de perlin gürültüsü nasıl üretilir?

0

Soru

Hayatta kalma oyunu yapmaya çalışıyorum ve perlin gürültüsüyle ilgili bir sorunum var. Programım bana bunu veriyor:

enter image description here

Ama adalar veya nehirler gibi bir şey istiyorum.

İşte kodum:

#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

En iyi cevabı

0

Yüklemenizi tavsiye ederim noise paket.
Sonra kullan noise.pnoise1(x) 1 boyutlu Perlin gürültüsü için, noise.pnoise2(x, y) 2 boyutlu Perlin gürültüsü için ve noise.pnoise3(x, y, z) 3 boyutlu Perlin gürültüsü için.

2021-11-24 16:33:42
0

İlk olarak, eleştirel düşünme: Perlin popüler bir terimdir, ancak gerçek" Perlin " gürültü algoritması eskidir ve gözle görülür şekilde kare hizalıdır. Genel bir kural olarak, Simpleks tipi bir gürültü kullanmak daha iyidir.

PyFastNoiseLite öneririm: https://github.com/tizilogic/PyFastNoiseLite Yükleme yönergelerini izleyin, ardından C ++ örneğini FastNoiseLite belgelerine buradan yansıtın: https://github.com/Auburn/FastNoiseLite/tree/master/Cpp Değiştirebileceğiniz dahili frekans çarpımına dikkat ettiğinizden emin olun SetFrequency(f)

Python gürültü kitaplığını, gürültü içeren Simpleks tipi gürültü için de kullanabilirsiniz snoise2(x, y) yine de kullanmak istiyorsanız snoise3(x, y, z) İlk önce bilgiyi burada ele alacağım: https://www.reddit.com/r/proceduralgeneration/comments/qr6snt/countdown_timer_simplex_patent_expiration/

2021-11-24 20:37:26

Diğer dillerde

Bu sayfa diğer dillerde

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