Recentemente, ho tentato di sconfiggere uno dei miei principali punti deboli nella programmazione in generale, generazione casuale. Ho pensato che sarebbe stata una cosa facile da fare, ma la mancanza di informazioni semplici mi sta uccidendo. Non voglio sembrare stupido, ma mi sembra che la maggior parte delle informazioni provenienti da posti come this siano scritte per matematici che sono andati al college per laurearsi in matematica teorica. Semplicemente non capisco cosa intendo fare con quella informazione per applicarla alla programmazione in un linguaggio come python.Generazione casuale di mappe Python con rumore Perlin
Ho lavorato alcuni giorni fissando equazioni e tentando tentativo dopo tentativo, ma dopo tutti quei giorni, dopo aver strappato il mio codice ancora e ancora, tutto ciò che ha funzionato correttamente per tutto questo tempo è questo generatore di rumore per generare un rumore di fondo:
import random
import math
random.seed(0)
def generateWhiteNoise(width,height):
noise = [[r for r in range(width)] for i in range(height)]
for i in range(0,height):
for j in range(0,width):
noise[i][j] = random.randint(0,1)
return noise
noise = generateWhiteNoise(50,12)
for i in noise:
print()
for o in i:
if(o == 0):
print('-',end='')
else:
print('#',end='')
questo codice produce questo risultato:
##-######--#--#-#--##-###-###---#-##-#-----#--##-#
#-#-##-##-#----##------##--#####-#-##---#--#-##---
-------#-#------#---#-#---###--#--#-###-----##-#--
######--#-#-#--####-###---#---###-##--#-#-##--####
-#----###--------##--##--##-#-#--#----###-####--##
---####-#--#--###-#-#--#--#####--####-#-##-##--#--
----#--####-#-#-#-#-#---#--###------###--#-######-
--###--#-###-------#-##--###---#-####----###-#####
#----##--##-#--##-###--#----#-#-##--##-#-##---###-
##---##----##--##--#--#--###-###-#--#-##---#------
-##----#-###---######---#-#---#---###---#---###-##
#--##-##-###-###---#--##-##--##-##-#-#-##--#-#-##-
sono voler che alla fine di produrre qualcosa di simile a questo:
--------------------------------------------------
------------------####----------------------------
-----------------#####----------------------------
----------------#####-----------------------------
---------------#####--------------###-------------
---------------#####--------------###-------------
---------------------------------####-------------
---######------------------------####-------------
---######------------###--------------------------
----########---------###--------------------------
-----#######---------###--------------------------
------###-----------------------------------------
Come posso eliminare il rumore bianco generato e trasformarlo in isole? Qualcuno può spiegarlo in un modo molto semplicistico per me?
Potrei pensare a tutto questo molto male.
Vorrei prendere il suggerimento di user1483482. Se vuoi saperne di più sul funzionamento interno prova a guardare qui: http://devmag.org.za/2009/04/25/perlin-noise/ Ho riprodotto il suo codice in python, e funziona, ma è ** Molto ** lento, anche con Numpy. – seth