2016-12-03 3 views
1

J'ai récemment cherché à créer un terrain généré par procédure pour les jeux. J'ai vu que le bruit de Perlin était utile pour cela, et j'ai donc essayé. Jusqu'à présent, le terrain est magnifiquement généré. Cependant, chaque fois que je lance le programme plusieurs fois, le terrain est exactement le même. Est-il possible de randomiser le bruit Perlin qui est généré?Graine aléatoire Python pour le bruit Perlin

code:

from opensimplex import OpenSimplex 
import random 
from time import time 

height = 40 
width = height 
scale = height/10 

value = [[0 for x in range(width)] for y in range(height)] 

gen = OpenSimplex() 
def noise(nx, ny): 
    # Rescale from -1.0:+1.0 to 0.0:1.0 
    return gen.noise2d(nx, ny)/2.0 + 0.5 

def printBiome(y, x): 
    if value[y][x] <= 2: 
    print('O', end = " ") 
    elif value[y][x] >= 8: 
    print('M', end = " ") 
    else: 
    print('L', end = " ") 

for y in range(height): 
    for x in range(width): 
     nx = x/width - 0.5 
     ny = y/height - 0.5 
     value[y][x] = 10 * noise(1 * scale * nx, 1 * scale * ny) + 0.5 * noise(2 * scale * nx, 2 * scale* ny) + 0.25 * noise(4 * scale * nx, 4 * scale * ny) 

for y in range(height): 
    for x in range(width): 
     printBiome(y, x) 
    print() 

Répondre

1

La classe OpenSimplex defaults to using seed=0. Pour générer un terrain différent, entrez une valeur de départ différente:

import uuid 
# http://stackoverflow.com/a/3530326/190597 
seed = uuid.uuid1().int>>64 
gen = OpenSimplex(seed=seed)