如何在 pygame 中生成柏林噪声?
How to generate perlin noise in pygame?
我正在尝试制作一款生存游戏,但我遇到了柏林噪音问题。我的程序给了我这个:
但我想要岛屿或河流之类的东西。
这是我的代码:
#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()
我建议安装 noise
软件包。
然后对一维柏林噪声使用noise.pnoise1(x)
,对二维柏林噪声使用noise.pnoise2(x, y)
,对三维柏林噪声使用noise.pnoise3(x, y, z)
。
首先,批判性思维:Perlin 是一个流行的术语,但实际的“Perlin”噪声算法是旧的并且明显是方形对齐的。作为一般规则,最好使用单纯形噪声。
我建议PyFastNoiseLite:https://github.com/tizilogic/PyFastNoiseLite Follow the install instructions, then mirror the C++ example in the FastNoiseLite documentation here: https://github.com/Auburn/FastNoiseLite/tree/master/Cpp一定要注意它的内部倍频,你可以用SetFrequency(f)
改变
您还可以使用 Python 噪音库来处理单纯型噪音,噪音 snoise2(x, y)
但如果您想使用 snoise3(x, y, z)
我会首先考虑这里的信息:https://www.reddit.com/r/proceduralgeneration/comments/qr6snt/countdown_timer_simplex_patent_expiration/
我正在尝试制作一款生存游戏,但我遇到了柏林噪音问题。我的程序给了我这个:
但我想要岛屿或河流之类的东西。
这是我的代码:
#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()
我建议安装 noise
软件包。
然后对一维柏林噪声使用noise.pnoise1(x)
,对二维柏林噪声使用noise.pnoise2(x, y)
,对三维柏林噪声使用noise.pnoise3(x, y, z)
。
首先,批判性思维:Perlin 是一个流行的术语,但实际的“Perlin”噪声算法是旧的并且明显是方形对齐的。作为一般规则,最好使用单纯形噪声。
我建议PyFastNoiseLite:https://github.com/tizilogic/PyFastNoiseLite Follow the install instructions, then mirror the C++ example in the FastNoiseLite documentation here: https://github.com/Auburn/FastNoiseLite/tree/master/Cpp一定要注意它的内部倍频,你可以用SetFrequency(f)
您还可以使用 Python 噪音库来处理单纯型噪音,噪音 snoise2(x, y)
但如果您想使用 snoise3(x, y, z)
我会首先考虑这里的信息:https://www.reddit.com/r/proceduralgeneration/comments/qr6snt/countdown_timer_simplex_patent_expiration/