Ein Forum, in dem sich neue Clonk Entwickler untereinander austauschen können.
 
StartseiteStartseite  PortalPortal  FAQFAQ  SuchenSuchen  AnmeldenAnmelden  MitgliederMitglieder  LoginLogin  

Austausch | 
 

 Der Zufall mit Arrays

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
Enrique
Generalleutnant
Generalleutnant
avatar

Männlich Ort : Oelde, NRW
Anmeldedatum : 20.05.08

BeitragThema: Der Zufall mit Arrays   Mo Jul 14, 2008 12:17 am

Nun zeige ich euch mal, was man tolles und zufälliges mit einem Array + Random erstellen kann. Dazu sollten wir aber erstmal etwas wissen:



Zuerst wollen wir einige "zufällige" Sachen zu Spielstart eines Szens erstellen.

    //-- Szenarioscript--//

    protected func Initialize(){
    var array = [DEK0,DEK1,DEK2,DEK3];
    CreateObject(array[Random(GetLength(array))]);
    }


Der Array speichert erstmal 4 ID's. Danach wird eines der 4 durch Random(GetLength()) rausgesucht und an der Position 0/0 erstellt.

------------------------------------------------------------------------------------------------------------------------

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:
 
Nach oben Nach unten
Benutzerprofil anzeigen
Simsi
Staatssekretär
Staatssekretär
avatar

Männlich Alter : 25
Ort : Vaihingen/Enz
Anmeldedatum : 30.03.08

BeitragThema: 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.

_________________
Copy this into your signature to have it in your signature.
Nach oben Nach unten
Benutzerprofil anzeigen
Gast
Gast



BeitragThema: 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.
Nach oben Nach unten
Biber
Fähnrich
Fähnrich
avatar

Anmeldedatum : 28.06.08

BeitragThema: Re: Der Zufall mit Arrays   Mo Jul 14, 2008 7:05 pm

Also muss man dann RandomX(1, GetLenght(array)) schreiben oder?
Nach oben Nach unten
Benutzerprofil anzeigen
Enrique
Generalleutnant
Generalleutnant
avatar

Männlich Ort : Oelde, NRW
Anmeldedatum : 20.05.08

BeitragThema: 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
Nach oben Nach unten
Benutzerprofil anzeigen
Simsi
Staatssekretär
Staatssekretär
avatar

Männlich Alter : 25
Ort : Vaihingen/Enz
Anmeldedatum : 30.03.08

BeitragThema: Re: Der Zufall mit Arrays   Di Jul 15, 2008 2:58 pm

geht auch

    Random(GetLength(array)+1);
??

_________________
Copy this into your signature to have it in your signature.
Nach oben Nach unten
Benutzerprofil anzeigen
Enrique
Generalleutnant
Generalleutnant
avatar

Männlich Ort : Oelde, NRW
Anmeldedatum : 20.05.08

BeitragThema: Re: Der Zufall mit Arrays   Di Jul 15, 2008 7:07 pm

müsste gehen, habs aber noch nie ausprobiert xP
Nach oben Nach unten
Benutzerprofil anzeigen
Caesar
Clonk
Clonk
avatar

Anmeldedatum : 08.09.08

BeitragThema: 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.
Nach oben Nach unten
Benutzerprofil anzeigen
Gast
Gast



BeitragThema: 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?
Nach oben Nach unten
Mozart
Kanzler
Kanzler
avatar

Männlich Alter : 24
Ort : Vaihingen/Enz
Anmeldedatum : 24.02.08

BeitragThema: Re: Der Zufall mit Arrays   Mo Sep 08, 2008 6:00 pm

2 caesaren? Shocked
Nach oben Nach unten
Benutzerprofil anzeigen http://www.funamfag.de
Caesar
Clonk
Clonk
avatar

Anmeldedatum : 08.09.08

BeitragThema: 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? Shocked
Das war leider schon immer so... Wir hatten uns zufällig auf unterschiedlichen Seiten gleichzeitig angemeldet.
Nach oben Nach unten
Benutzerprofil anzeigen
Mozart
Kanzler
Kanzler
avatar

Männlich Alter : 24
Ort : Vaihingen/Enz
Anmeldedatum : 24.02.08

BeitragThema: 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
Nach oben Nach unten
Benutzerprofil anzeigen http://www.funamfag.de
Caesar
Clonk
Clonk
avatar

Anmeldedatum : 08.09.08

BeitragThema: Re: Der Zufall mit Arrays   Di Sep 09, 2008 11:47 am

Jaja, die kleinen Unschärfen in der deutschen Sprache. Razz
Stimmt wohl == Das, was du gesagt hast, ist leider (aus meiner sicht) richtig.
Nach oben Nach unten
Benutzerprofil anzeigen
Gast
Gast



BeitragThema: Re: Der Zufall mit Arrays   Di Sep 09, 2008 5:11 pm

Zitat: "Ich mag keine Leute, die Geburtsdaten in ihre Namen schreiben..."
:|
Nach oben Nach unten
Gesponserte Inhalte




BeitragThema: Re: Der Zufall mit Arrays   

Nach oben Nach unten
 
Der Zufall mit Arrays
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Fortgeschrittene :: Tutorials-
Gehe zu: