Das selbe Spielchen lässt sich auch mit "Strings" machen. Dazu schluckt der Array einige Strings und diese Rufen wir dann zufällig auf.
//-- Szenarioscript--//
protected func Initialize(){ var array = ["Lava","Water","Acid","Earth"]; LaunchVolcano(Random(1000),0,RandomX(10,25),array[Random(GetLength(array))]); }
Mit diesem Script wird zu Anfang ein toller Vulkan mit zufälligem Material erstellt. Er funktioniert wie oben.
Spoiler:
Teile des Scriptes sind aus meinem Szen, bald auf dem CCAN =D
Simsi Staatssekretär
Alter : 31 Ort : Vaihingen/Enz Anmeldedatum : 30.03.08
Thema: Re: Der Zufall mit Arrays Mo Jul 14, 2008 1:40 pm
Man kann dann dadraus doch auch eine tolle funktion basteln =) :
func CreateArrayObject(array a, int X, int Y, int Owner) { var Ding = Random(GetLength(a)); while(GetType(Ding) != C4V_C4ID) { if(counter >= 50) return(0); Ding = Random(GetLength(a)); counter++; } CreateObject(Ding, X, Y, Owner); return(true); }
Erzeugt aus dem angegeben Array a, ein zufälliges Objekt, falls das überhaupt eine ID ist. falls er nach 50 durchgängen keine ID gefunden hat, hört er auf.
Gast Gast
Thema: Re: Der Zufall mit Arrays Mo Jul 14, 2008 5:06 pm
Das mit Random(GetLengh()) funktioniert nicht, weil Random immer 1 höher sein muss.
Biber Fähnrich
Anmeldedatum : 28.06.08
Thema: Re: Der Zufall mit Arrays Mo Jul 14, 2008 7:05 pm
Also muss man dann RandomX(1, GetLenght(array)) schreiben oder?
Enrique Generalleutnant
Ort : Oelde, NRW Anmeldedatum : 20.05.08
Thema: Re: Der Zufall mit Arrays Mo Jul 14, 2008 7:32 pm
GetLength gibt ja die größe des Arrays zurück. Alternativ könnte man auch Random(Anz. des Arrays) bzw RandomX (1, anz des Arrays) schreiben
Simsi Staatssekretär
Alter : 31 Ort : Vaihingen/Enz Anmeldedatum : 30.03.08
Thema: Re: Der Zufall mit Arrays Di Jul 15, 2008 2:58 pm
geht auch
Random(GetLength(array)+1);
??
Enrique Generalleutnant
Ort : Oelde, NRW Anmeldedatum : 20.05.08
Thema: Re: Der Zufall mit Arrays Di Jul 15, 2008 7:07 pm
müsste gehen, habs aber noch nie ausprobiert xP
Caesar Clonk
Anmeldedatum : 08.09.08
Thema: Re: Der Zufall mit Arrays Mo Sep 08, 2008 2:41 pm
So ein Unsinn. Ich mache mal ein Beispiel. Ein Array der Länge 5: ["Erster Eintrag",2,"dritter","Nummer 4",5] Um nun auf den ersten eintrag zuzugreifen, nimmt man aArray[0], also ist aArray[0] == "Erster Eintrag". Auf den letzten Eintrag referenziert also aArray[4], aArray[GetLength(aArray)-1]. Random(x) gibt ein Intervall von null bis x zurück, mathematisch so [0;x[, was bedeutet, dass x nie vorkommt, aber werte über x-1 schon (x ausgeschlossen). Da es in Clonk aber nun mal keine Fließkommazahlen gibt, wird abgerundet, der größte Wert ist also x-1, der kleinste ist 0. Optimal für das Arbeiten mit Arrays.
Schlussfolgerung: aArray[Random(GetLength(aArray))] ist korrekt.
Gast Gast
Thema: Re: Der Zufall mit Arrays Mo Sep 08, 2008 4:43 pm
Caesar schrieb:
Random(x) gibt ein Intervall von null bis x zurück
Unsinn, eine Zahl von 0 bis x-1. Und ausserdem ist ein Intervall etwas ganz anderes?
Mozart Kanzler
Alter : 31 Ort : Vaihingen/Enz Anmeldedatum : 24.02.08
Thema: Re: Der Zufall mit Arrays Mo Sep 08, 2008 6:00 pm
2 caesaren?
Caesar Clonk
Anmeldedatum : 08.09.08
Thema: Re: Der Zufall mit Arrays Mo Sep 08, 2008 6:06 pm
Caeser schrieb:
Unsinn, eine Zahl von 0 bis x-1. Und ausserdem ist ein Intervall etwas ganz anderes?
Hmm, stimmt wohl, Random gibt eine Zahl innerhalb dieses Intervalls zurück. Und ich meine damit nicht das C4Script Random...
Mozart schrieb:
2 caesaren?
Das war leider schon immer so... Wir hatten uns zufällig auf unterschiedlichen Seiten gleichzeitig angemeldet.
Mozart Kanzler
Alter : 31 Ort : Vaihingen/Enz Anmeldedatum : 24.02.08
Thema: Re: Der Zufall mit Arrays Mo Sep 08, 2008 6:15 pm
du hast dirgrad selber wiedersprochen
1. Aussage: Random(x) gibt ein Intervall zurück Gegenaussage: Random(x) gibt eine Zahl innerhalb eines Intervalls zurück deine Aussage: Stimmt nciht, Random(x) gibt eine Zahl innerhalb eines Intervalls zurück
Caesar Clonk
Anmeldedatum : 08.09.08
Thema: Re: Der Zufall mit Arrays Di Sep 09, 2008 11:47 am
Jaja, die kleinen Unschärfen in der deutschen Sprache. Stimmt wohl == Das, was du gesagt hast, ist leider (aus meiner sicht) richtig.
Gast Gast
Thema: Re: Der Zufall mit Arrays Di Sep 09, 2008 5:11 pm
Zitat: "Ich mag keine Leute, die Geburtsdaten in ihre Namen schreiben..." :|