Nur keine hektik Stargate, habe ja jetzt auch lange gebraucht um zu Antworten.
Der Gausfilter würde zwar auch gehen, allerdings habe ich da das Problem das man den Punkt an die Umgebung anpasst und nicht die Umgebung an den Punkt. Da ich das ganze nicht nur zum Map erstellen nutze sollte sich aber die Umgebung an den Punkt anpassen.
Nach langem Tüfteln habe ichs nun so gemacht:
Code: Alles auswählen
#MapX = 32 : #MapZ = 32
Global Dim Map_Height.b(#MapX,#MapZ)
Global Dim ArroundList.i(#MapX*#MapZ*4,2)
Procedure AddArroundMapItem(X.i,Z.i,Height.i)
If Map_Height(X,Z) = 0
ArroundList(ArroundListCount , 0) = X
ArroundList(ArroundListCount , 1) = Z
ArroundList(ArroundListCount , 2) = Height
ArroundListCount + 1
EndIf
EndProcedure
Procedure CreateMap(Height.b)
Protected P.i,X.i,Z.i,Y.i
AddArroundMapItem(0,0,Height)
While ArroundList(P,2) <> 0
RandomSeed(ElapsedMilliseconds()+P)
ArroundList(P,2) + Random(10) - 5
If ArroundList(P,2) = 0
ArroundList(P,2) = 1
EndIf
X = ArroundList(P,0)
Z = ArroundList(P,1)
Y = ArroundList(P,2)
AddArroundMapItem(X-1,Z,Y)
AddArroundMapItem(X+1,Z,Y)
AddArroundMapItem(X,Z+1,Y)
AddArroundMapItem(X,Z-1,Y)
P + 1
Wend
EndProcedure
CreateMap(128)
Funktioniert blöderweise nicht, gibt nen "Array index out of bounds" beim AddArroundMapItem. Nur selbst nach Stundenlangem Prüfen des Codes kapier ich einfach nicht warum. Die Schleife läuft im Prinzip unendlich Lang weiter, obwohl sie doch eigentlich stoppen sollte sobald die Karte gefüllt ist?
Weis jemand da Rat? Wäre sehr dankbar.