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

Austausch | 
 

 Random und RandomX

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
Gehe zu Seite : 1, 2  Weiter
AutorNachricht
Extremclonk
Staatsrat
Staatsrat
avatar

Männlich Ort : Am Anti-Spam-Limes
Anmeldedatum : 19.01.09

BeitragThema: Random und RandomX   So Aug 30, 2009 5:21 pm

Schwierigkeitsgrad:*****
Vorwissen: Ein paar grundlegende Scriptkentnisse.

Die Funktionen

Es gibt zwei Funktionen die in Frage kommen wenn eine zufällige Zahl ausgegeben werden soll, welche dazu benutzt werden kann den Zufall in dein Clonkscript einzubauen.
Zum einen Random und RandomX.

Random

Die Funktion Random gibt eine Zahl zwischen null und dem angegebenen Zahlenwert (iMaxVal) aus. Will ich eine Zufallszahl zwischen 0 und 10 sieht das dann so aus:
Code:
Random(10);
Random schließt hier die Null mit ein, sprich sie kann auch ausgegeben werden, die Zehn ist allerdings ausgeschlossen, der Maximale Zahlenwert wird nie ausgegeben.

RandomX

Die Funktion RandomX gibt eine Zahl zwischen der ersten angegebenen Zahl (iVal1) und der zweiten angegebenen Zahl (iVal2) aus. Will ich eine Zufallszahl zwischen 0 und 10 sieht das hier so aus:
Code:
RandomX(0,10); oder RandomX(10,0);
Es ist egal ob die höhere Zahl vorne oder hinten steht, der Einfachheit halber ist es aber sinnvoll sie hinten hin zu schreiben.
Des weiteren sind beide Zahlenwerte mit eingeschlossen, es kann sowohl iVal1 als auch iVal2 ausgegeben werden.



Welche Funktion soll ich verwenden?

Es ist auf jeden Fall sinvoller auf RandomX zu setzen denn:

-Random kann keine negativen Zahlen ausgeben. Gibt man als iMaxVal eine negative Zahl ein kommt aberwitziger Blödsinn raus, allerdings kein Error, was die Sache noch fieser macht.
-Bei RandomX können beide Grenzen selbst gesetzt werden, so hat man nicht Null als vorgegebene Grenze sondern kann die Unter/Obergrenze auch unter/über Null setzen.
-RandomX kann Random leicht ersetzen indem einer der Zahlenwerte mit Null angegeben wird.

Man kann zwar alles auch mit Random schreiben aber das machts bloß kompliziert schauts euch unten an und urteilt selbst.

Praktische Anwendung

Eine wichtiger Anwendungmöglickeit liegt natürlich in if-Funktionen.

Je nach Ausgabewert von Random/RandomX kann man verschiedene Ereignisse eintreten lassen. Zum Beispiel:

Code:

func Hit()
{
if(RandomX(0,1)) Explode(18);
}
Wahrscheinlichkeit von 50:50 das das Ding beim Aufprall Explodiert.
Code:

func Hit()
{
if(Random(2)) Explode(18);
}
Dasselbe nur mit Random.


Man kann natürlich auch die Explosionsstärke zufällig machen.

Code:

func Hit()
{
Explode(RandomX(20,30);
}
Explodiert beim Aufprall mit einer Stärke von 20 bis 30.
Code:

func Hit()
{
Explode(20+Random(11));
}
Dasselbe mit Random.

Oder einen Winkel.

Code:

func Winkel()
{
angle = RandomX(88,92);
}
Der Winkel zeigt nicht immer stur nach rechts sondern variiert 2° nach oben bzw. unten.
"angle" müssen wir zuvor als local definieren.
Code:

func Winkel()
{
angle = 88+Random(5);
}
Dasselbe mit Random.


Wir können die Geschwindigkeit zufällig machen.

Code:

func Move()
{
SetXDir(RandomX(-15,15));
SetYDir(RandomX(-10, -5));
}
Wird die Funktion aufgerufen bewegt sich das Objekt mit einem Dir von 5-10 nach oben und einem zwischen 0 und 15 nach links oder rechts.
Code:

func Move()
{
SetXDir(Random(16)-Random(16));
SetYDir(-5-Random(6));
}
Dasselbe mit Random.

Ein Wort zum Schluss

Ich hab hier nur wenige der zahllosen Anwendungsmöglickeiten aufgezeigt die die Random Funktionen bieten. Man kann sie mit sehr vielen anderen Befehlen und Funktionen im Clonkscript kombinieren udn sozusagen hintereinanderschalten, man muss nur kreativ sein.
Ich hoffe das Tutorial ist verständlich, die Materie ist ja an sich nicht sehr kompliziert.
Und ich weiß Scriptkentnisse werden groß geschrieben aber der macht das immer klein.


Zuletzt von Extremclonk am So Aug 30, 2009 6:50 pm bearbeitet; insgesamt 6-mal bearbeitet
Nach oben Nach unten
Benutzerprofil anzeigen
Bowserkoopa
Staatsrat
Staatsrat
avatar

Männlich Alter : 23
Anmeldedatum : 21.12.08

BeitragThema: Re: Random und RandomX   So Aug 30, 2009 5:35 pm

Ist wirklich einfach erklärt. Werde in Zukunft also auf RandomX setzen, ist ja besser. Und ich dachte mir gerade, ich schreibe mal heute ein Tutorial über Random. Tja, warst wohl schneller. Kann man eigentlich irgendwo Tutorials reservieren? Außerdem muss man das Tutorial noch in die Gesamtliste eintragen.
Nach oben Nach unten
Benutzerprofil anzeigen
Extremclonk
Staatsrat
Staatsrat
avatar

Männlich Ort : Am Anti-Spam-Limes
Anmeldedatum : 19.01.09

BeitragThema: Re: Random und RandomX   So Aug 30, 2009 5:39 pm

Tja Bowserkoopa wer zu spät kommt den bestraft das Leben. Nun ich denke wenn du klar sagst "Ich werde ein solches Tut machen, bitte kein solches Tut schreiben" wird das wohl respektiert werden, von mir zumindest. Aber auf ein "ich weiß nicht vllt. mach ich das mal" geb ich nix. Es ist schon in der gesamt Liste, als Mod kann ichs einfach eintragen.
Nach oben Nach unten
Benutzerprofil anzeigen
Bowserkoopa
Staatsrat
Staatsrat
avatar

Männlich Alter : 23
Anmeldedatum : 21.12.08

BeitragThema: Re: Random und RandomX   So Aug 30, 2009 5:54 pm

Achso, wollte nur das mans nicht vergisst. Wusste erst nicht ob ich eben Random, oder SolidMasks nehme. Kamen ja verschiedene Vorschläge.
Nach oben Nach unten
Benutzerprofil anzeigen
Sir_Jones
Leutnant
Leutnant


Anmeldedatum : 18.08.09

BeitragThema: Re: Random und RandomX   So Aug 30, 2009 6:18 pm

Genau so hab eich mir das vorgestellt Smile
Nach oben Nach unten
Benutzerprofil anzeigen
Höfi
SFT
SFT
avatar

Männlich Alter : 22
Anmeldedatum : 20.10.08

BeitragThema: Re: Random und RandomX   So Aug 30, 2009 6:22 pm

Also ich nutze für alles Random(), aber das ist Geschmacksache^^
Nach oben Nach unten
Benutzerprofil anzeigen
Bowserkoopa
Staatsrat
Staatsrat
avatar

Männlich Alter : 23
Anmeldedatum : 21.12.08

BeitragThema: Re: Random und RandomX   So Aug 30, 2009 6:29 pm

Bis jetzt habe ich auch immer Random verwendet, aber nach dem lesen des tuts bin ich mir nicht sicher.
Nach oben Nach unten
Benutzerprofil anzeigen
Extremclonk
Staatsrat
Staatsrat
avatar

Männlich Ort : Am Anti-Spam-Limes
Anmeldedatum : 19.01.09

BeitragThema: Re: Random und RandomX   So Aug 30, 2009 6:39 pm

Na ja mit etwas geschick kann man auch random für alles verwenden, ich hab das Tut noch ergänzt aber ehrlich: Das ist doch keine schöne Syntax.
Nach oben Nach unten
Benutzerprofil anzeigen
Bowserkoopa
Staatsrat
Staatsrat
avatar

Männlich Alter : 23
Anmeldedatum : 21.12.08

BeitragThema: Re: Random und RandomX   So Aug 30, 2009 6:44 pm

Also solange es gut erklärt ist, und schön mit Beispielen gezückt ist, ists ja Super. Du kannst ja noch hinzuschreiben, das Random für den Zufall und Warscheinlichkeit benutzt wird, denn als Anfänger weiß man nicht, was man mit ner zufälligen Zahl anfangen soll.
Nach oben Nach unten
Benutzerprofil anzeigen
Rouby
Major
Major


Männlich Alter : 29
Ort : Bremen
Anmeldedatum : 02.09.09

BeitragThema: Re: Random und RandomX   Mi Sep 02, 2009 4:23 pm

Zitat :
-Random kann keine negativen Zahlen ausgeben. Gibt man als iMaxVal eine negative Zahl ein kommt aberwitziger Blödsinn raus, allerdings kein Error, was die Sache noch fieser macht.
Das stimmt doch garnicht. Bei mir hat es immer gut funktioniert und die Doku gibt es sogar als Beispiel an:
Zitat :
SetXDir(RandomX(-20,+20));
Setzt die horizontale Geschwindigkeit des Objekts auf einen Zufallswert zwischen -20 und +20.
Nach oben Nach unten
Benutzerprofil anzeigen
Extremclonk
Staatsrat
Staatsrat
avatar

Männlich Ort : Am Anti-Spam-Limes
Anmeldedatum : 19.01.09

BeitragThema: Re: Random und RandomX   Mi Sep 02, 2009 4:27 pm

Wer lesen kann ist klar im Vorteil. Im ersten Zitat geht es um die Funktion Random im zweiten um RandomX. Das sind 2 verschiedene Funktionen.
Nach oben Nach unten
Benutzerprofil anzeigen
Rouby
Major
Major


Männlich Alter : 29
Ort : Bremen
Anmeldedatum : 02.09.09

BeitragThema: Re: Random und RandomX   Mi Sep 02, 2009 4:29 pm

*censored by Höfi*
Nach oben Nach unten
Benutzerprofil anzeigen
Burning Thing
Brigadegeneral
Brigadegeneral
avatar

Männlich Alter : 20
Ort : Wien
Anmeldedatum : 07.06.09

BeitragThema: Re: Random und RandomX   Mi Sep 02, 2009 4:54 pm

Ich finde das Tut gut und es hilft mir sehr. Smile


Rouby schrieb:
Embarassed
Fällt das nicht genau in den Bereich Spam?


Zuletzt von Burning Thing am Fr Jul 30, 2010 6:25 pm bearbeitet; insgesamt 1-mal bearbeitet
Nach oben Nach unten
Benutzerprofil anzeigen
Extremclonk
Staatsrat
Staatsrat
avatar

Männlich Ort : Am Anti-Spam-Limes
Anmeldedatum : 19.01.09

BeitragThema: Re: Random und RandomX   Mi Sep 02, 2009 5:07 pm

Erstmal danke für das Lob und von wegen Spam, na ja ein Smiley ist selten ne richtige antwort aber in dem Fall, nun ja er hat einen guten Grund zu antworten und was er sagen will verstehn wir ja alle oder?
Nach oben Nach unten
Benutzerprofil anzeigen
Gast
Gast



BeitragThema: Re: Random und RandomX   Do Okt 15, 2009 3:24 pm

Ein sehr gutes Tut, welches richtig gut erklärt worden ist.
Nach oben Nach unten
Voltago
Brigadegeneral
Brigadegeneral
avatar

Anmeldedatum : 25.09.09

BeitragThema: Re: Random und RandomX   So Okt 25, 2009 6:24 pm

Also wenn ich einem Clonk eine unbestimmte Anzahl an z.b. Pfeile geben will wär das dann:

CreateContents(AROW,pClonk)-> RandomX(0);

?
Nach oben Nach unten
Benutzerprofil anzeigen
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Re: Random und RandomX   So Okt 25, 2009 6:33 pm

Hä? Nein.

Dein Script macht folgendes: "Erstelle ein Objekt der ID AROW in pClonk, rufe dann in diesem Objekt RandomX(0,0) auf. Gebe mir dann den Wert zurück" Was passiert? pClonk bekommt ein Objekt AROW(Was aber kein Pfeil ist!), und das ganze gibt 0 zurück, weil RandomX(0,0) nur 0 zurückgeben kann. Schriebest du also
Code:
var rnd = CreateContents(AROW,pClonk)-> RandomX(0);
ist rnd 0, wenn es AROW gibt, ansonsten bekommst du einen Fehler "Object Call: Target is Zero", weil die Engine kein Objekt der ID AROW erstellen konnte.


Erzeugen wir 10-20 Pfeile im Clonk:

Code:

CreateContents(ARRW,pClonk, RandomX(10, 20));
Nach oben Nach unten
Benutzerprofil anzeigen
Voltago
Brigadegeneral
Brigadegeneral
avatar

Anmeldedatum : 25.09.09

BeitragThema: Re: Random und RandomX   So Okt 25, 2009 6:37 pm

Ja die ID ist nicht ganz richtig aber ich meine gehört zu haben, dass, wenn man 0 eingibt ein unbeliebige Zal an Objekten rauskommen :S
Nach oben Nach unten
Benutzerprofil anzeigen
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Re: Random und RandomX   So Okt 25, 2009 6:39 pm

Wenn man wo 0 angibt?
Nach oben Nach unten
Benutzerprofil anzeigen
Voltago
Brigadegeneral
Brigadegeneral
avatar

Anmeldedatum : 25.09.09

BeitragThema: Re: Random und RandomX   So Okt 25, 2009 7:06 pm

Voltago schrieb:
CreateContents(AROW,pClonk)-> RandomX(0);

hinter RandomX in den Klammern
Nach oben Nach unten
Benutzerprofil anzeigen
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Re: Random und RandomX   So Okt 25, 2009 8:46 pm

Ne, du sagst nur, dass das erstellte Objekt RandomX(0) ausführen soll, wie ich oben beschrieben habe. Undefinierte Anzahl wäre eh Mist, was willst du mit 245572 Pfeilen?
Nach oben Nach unten
Benutzerprofil anzeigen
Voltago
Brigadegeneral
Brigadegeneral
avatar

Anmeldedatum : 25.09.09

BeitragThema: Re: Random und RandomX   So Okt 25, 2009 9:30 pm

Also stimmt das jetzt mit der undefinierten Zahl?

Und das bringt was für KIs die dann eine FAST unerschöpfliche Quelle an Pfeilen hätten
Nach oben Nach unten
Benutzerprofil anzeigen
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Re: Random und RandomX   So Okt 25, 2009 10:29 pm

Ich dachte, das sei klar geworden. Natürlich stimmt das nicht. Der KI kannst du einfach wieder neue Pfeile nachgeben, per Timer. Eine KI hat ja sowieso immer mindestens einen Timer.
Nach oben Nach unten
Benutzerprofil anzeigen
Voltago
Brigadegeneral
Brigadegeneral
avatar

Anmeldedatum : 25.09.09

BeitragThema: Re: Random und RandomX   So Okt 25, 2009 11:24 pm

aber so gehts einfacher Smile
Nach oben Nach unten
Benutzerprofil anzeigen
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Re: Random und RandomX   Mo Okt 26, 2009 12:39 am

Nimm 1410065407 . Größte Zahl in Clonk, wenn ich mich nicht irre. Die Engine wird sich freuen !
Nach oben Nach unten
Benutzerprofil anzeigen
Gesponserte Inhalte




BeitragThema: Re: Random und RandomX   

Nach oben Nach unten
 
Random und RandomX
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 2Gehe zu Seite : 1, 2  Weiter
 Ähnliche Themen
-
» Random Header CSS

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