Inhaltsverzeichnis

Funktionen

Funktionen im Skript werden dazu benutzt um Abläufe zu automatisieren und eure Geschichte im Spiel zu gestalten.
Sie können Parameter und einen Rückgabewert haben. Einfache Funktionen lassen sich betrachten wie ein Todo-Zettel mit Aufgaben, die noch zu erledigen sind.
Wenn der Zettel einmal aufgeschrieben wurde, kann er immer wieder abgearbeitet werden, indem sein Name aufgerufen wird.

Definition

func typ Name (
   //hier, zwei Parameter. Bei einer Parameteranzahl zwischen 0 und 8 gibt es keine Probleme
   var typ ParameterA,
   var KLASSEN_TYP ParameterB
) {
   //TODO Liste, der Aufgabenzettel für die Engine
   //Variablenzuweisung
   Questvariable = Konstante;
   
   //Eigenschaftenzuweisung
   ParameterB.eigenschaft[ParameterA] = Andere_Konstante;
   
   //Der Rückgabewert
   return Wert_Vom_Typ_typ;
};
Code Beschreibung Möglicher Wert
typBezeichnet einen Werttyp.int, float, string, void (kein Rückgabewert), C_NPC, C_ITEM
KLASSEN_TYPBezeichnet einen Werttyp, der eine Klasse ist.C_NPC, C_ITEM, C_INFO
NameBezeichnet die Funktion. Ihr Name muss neu sein.FunktionA, ABC_Funktion, A_Funktion_001
ParameterA, ParameterBBezeichnen die Parameter einer Funktion.siehe oben
QuestvariableBezeichnet eine globale Variablesiehe Variablen
Konstante, Andere_KonstanteBezeichnet zwei globale Konstantensiehe Konstanten

Welche Bedeutung die Anweisungen Variablen- bzw. Eigenschaftenzuweisung und return haben steht im Abschnitt Operatoren.

Parameter (Mehrzahl)

Zurück zum Aufgabenzettel. Es wurde gesagt, dass die Aufgabenzettel beliebig oft abgearbeitet werden können. Wenn allerdings sich das Abarbeiten nicht irgendwie verallgemeinern ließe, dann müssten wir sehr viele Zettel bzw. Funktionen schreiben.
Jedoch, glücklicherweise lassen sie sich mittels Parameter verallgemeinern, d.h. ein Zettel kann für mehr als eine Situation aufgerufen werden.

Beispiel
Deine Mutter schreibt einen Zettel func void Kind_Kauft_bei_Aldi(Kind,Produkt,Anzahl) {}; um jedes ihrer Kinder, mit dem Einkauf bei Aldi Süd eines beliebigen Produktes in beliebiger Anzahl zu beauftragen.
Noch allgemeiner formuliert lautete ihr Zettel func void Kind_Kauft_bei(Kind,Produkt,Anzahl,Haendler) {};

Funktionsaufruf

Jede Funktion kann aufgerufen werden. Das heißt, dass die Aufgaben auf dem Zettel abgearbeitet werden.
Beim Aufruf schreibt man den Namen des Zettels bzw. der Funktion und in runden Klammern - mit oder ohne Leerzeichen - danach die zu übergebenden Parameter getrennt durch Kommata (Kommas). Der Zettel wird dann mit den übergebenen Parametern abgearbeitet.

Beispiel (fortgesetzt)
Deine Mutter schickt dich zum Bioladen um zwölf Bio-Eier zu kaufen. Dazu ruft sie ihren Zettel auf: Kind_Kauft_Bei(Du,Bioeier,12,Bioladen);
Dabei ist natürlich wichtig, dass die Parameter in der richtigen Reihenfolge übergeben, d.h. aufgeschrieben werden. Außerdem müssen und können nur dann Parameter übergeben, wenn die Funktionsdefinition sie auch enthält und zwar genau so viele die Funktionsdefinition enthält und vom gleichen Typ!

Rückgabewert, englisch: return value

Manchmal möchte man eine Antwort über das Ergebnis der Funktion erhalten. Dazu muss in der Funktionsdefinition der Antworttyp, Ergebnistyp oder Rückgabetyp festgelegt werden. Zulässig sind alle Typen oder void, welches soviel bedeutet wie: kein Rückgabewert.

Beispiel (fortgesetzt)
Deine Mutter schreibt auf ihren Zettel, dass sie eine Zahl bzw. int als Antwort möchte. Die Zahl ist der Gesamteinkaufspreis in Eurocent.

func int Kind_Kauft_Bei_Gesamtpreis(Kind,Produkt,Anzahl,Haendler) { return Gesamtpreis; };

Es gehört zum guten Ton, dass die Mutter sich diese Antwort merkt.

var int ausgegeben;
ausgegeben = ausgegeben + Kind_Kauft_Bei_Gesamtpreis(Du,Bioeier,12,Bioladen);

In diesem Beispiel merkt sich deine Mutter, wieviel ihre Kinder insgesamt bisher ausgegeben haben, in dem sie zu dem was bisher ausgegeben wurde das hinzuzählt was zuletzt ausgegeben wurde.

Wenn die Antwort der Funktion mittels der Anweisung return Wert_vom_Werttyp_typ; zurückgegeben wird, dann wird sofort die weitere Abarbeitung des Todo-Zettels eingestellt, beendet.

Siehe auch

Daedalus, Funktionstypen