Spieler:Brokkoli/ScriptingAnfängerkurs

Aus STNE-Wiki

Wechseln zu: Navigation, Suche
fertige Scripte | Anleitungen und FAQ | Überblick über die Scripting-Sektion | Hilfen zum Arbeiten im Wiki

Inhaltsverzeichnis

Vorwort

Eine Besonderheit von STNE ist, dass man durch Scripts die meisten Aktionen automatisieren kann und sogar das Spiel mit eigenen Seiten erweitern kann.

Dieser Kurs richtet sich vor allem an diejenigen, die zuvor noch nie mit Programmierung zu tun hatten und trotzdem gerne Scripts für STNE schreiben würden. Die sollen hier auf möglichst einfache Weise einen Einstieg finden. Aber bitte erwartet keine Wunder, niemand der keine Ahnung vom Programieren hat, kann dies über Nacht lernen. Daher ist insbesondere eine Sache von enormer Wichtigkeit: Geduld – denn nur wer mit Geduld die Sachen angeht wird letzten Endes mit einem funktionieren Script belohnt. Wer die schnellen Erfolge sucht, der sollte es gleich lassen. Wir wünschen allen viel Spaß und gutes Gelingen.

Grundlagen

Um mit dieser Anleitung zu beginnen solltest du erstmal ein neues Script erstellen. Wähle als Scripttyp "Benutzerdefiniertes Script ohne Eingabeassistent". (Was ein "Web-Script" ist wird in einer weiteren Anleitung behandelt.) Nun bist du in der Quelltextansicht, die allerdings noch nichts anzeigt - Du hast ja noch kein Script eingegeben. Gehe nun auf "Quelltext bearbeiten" um dein erstes Script zu programmieren.

Scripts in STNE bestehen aus einer Datei die grundsätzlich zeilenweise abgearbeitet wird. In jeder Zeile kann eine Anweisung oder auch ein Kommentar stehen. Wobei Kommentare nur zur Erklärung dienen und keinen Einfluss auf das Script haben.

Hello World

Wir beginnen den Ausflug in die Programmierwelt mit einem klassischen Bespiel. Dem "Hello World"-Script. Das einzige was dieses Script macht ist "Hello World" in die Ausgabe zu schreiben.

Gib folgendes im Scripteditor ein und klicke danach auch "Speichern & ausführen":

WriteLine('Hello World');

Nun solltest du die folgende Ausgabe sehen:

Script gestartet.
Hello World
Script beendet.

Klicke nun auf "Quelltext" um zum Scripteditor zurückzukehren.

Was tut dieses Script?

Das Script besteht, wie man leicht sieht, aus nur einer Zeile mit einer Anweisung. Die Anweisung ist hier ein Aufruf der Funktion WriteLine (Was genau ein Funktionsaufruf ist, wird später erklärt). Dieser Funktion wird in runden Klammern mitgegeben, welcher Text ausgegeben werden soll. In diesem Fall handelt es sich um eine benutzerdefinierte Zeichenfolge (Genauer: Ein "String" - Dies wird auch später erklärt). Benutzerdefinierte Zeichenfolgen stehen immer in Anführungszeichen. Abgeschlossen wird die Anweisung durch ein Semikolon ";". Dies ist bei jeder Anweisung erforderlich.

Kommentare

Nun verändere das Script dass es wie folgt aussieht:

//"Hello World" ausgeben
WriteLine('Hello World');

Wenn du dieses ausführst, passiert... genau das gleiche wie zuvor. Die neue Zeile die mit "//" beginnt ist nämlich ein Kommentar.

Was ist ein Kommentar?

Kommentare werden nicht ausgeführt und haben daher keinen Einfluss auf das Verhalten des Scriptes. Also wozu das ganze?

Bei grösseren Scripts kann man schnell die Übersicht verlieren was eigentlich geschieht. Daher ist es sehr sinnvoll mit Kommentaren zu beschreiben was man mit dem Script oder Scriptteil beabsichtigt. Kommentare sollten sehr ausfürlich verwendet werden - insbesondere wenn du das Script an andere weitergeben willst, die das Script auch verstehen sollen.

Es gibt 2 Arten von Kommentaren: Einzeilige und mehrzeilige.

Mit "//" beinnt ein einziliger Kommentar. Du kannst also bis zum Ende der Zeile belibigen Text schreiben, der nicht ausgeführt werden soll.

Eine andere Möglichkeit ist der mehrzeilige Kommentar. Dieser beginnt mit "/*" und endet mit "*/". Das Ende des Kommentares kann belibig weit vom Anfang entfernt sein. Es eignet sich also besonders für längere Texte, allerdings kann das Endezeichen "*/" auch in der gleichen Zeile wie der Start stehen - Dann ist es in wirklichkeit doch ein einzeiliger Kommentar.

Beispiel:

/* Hello World Beispiel
Dieses Script gibt "Hello World" aus und tut sonst garnichts.
Es soll nur die Verwendung von mehrzeiligen Kommentaren erklären. */
WriteLine('Hello World');

Zusammenfassung

  • Scripts werden Zeilenweise ausgeführt. In jeder Zeile steht eine Anweisung.
  • Kommentare werden nicht ausgeführt, sollten aber reichlich verwendet werden um den Programmcode zu erklären.

Ausdrücke (Expressions)

Was ist ein Ausdruck? In diesem Fall nichts was aus einem Drucker herauskommt, sondern ein Teil einer Anweisung, das einen bestimmten Wert zurückliefert. Diese etwas abstrakte Beschreibung werden wir durch ein Bespiel erklären:

//"Hello World" ausgeben
WriteLine('Hello World');
//Ein wenig rechnen
WriteLine(2 * 4 + 3);
//Ist denn nun 1 gleich 2?
WriteLine(1 = 2);

Wie viele Ausdrücke sind in diesem Beispiel? Dies wäre eine gute Frage für viele Quizsender, denn es sind nicht nur 2 oder 3, sondern 9. Wir werden die nun im Einzelnen durchgehen.

Der erste Ausdruck ist "'Hello World'". Nun werden sich sicher einige fragen "Sollte ein Ausdruck nicht einen Wert zurückgeben?". Genau das tut dieser auch. Die Rückgabe ist genau die Zeichenfolge "Hello World" (Man beachte dass hier keine einfachen Anführungszeichen ' vorkommen). Diese Rückgabe wird dann an die Funktion WriteLine übergeben.

In der ersten Zeile ist also nur ein einziger Ausdrück. Kommen wir zur zweiten Zeile. Wie man leicht sieht wird hier eine Rechnung ausgeführt. Wenn man das Script startet wird das richtige Ergebnis "11" ausgegeben. Wo sind hier also die Ausdrücke?

Zuerst einmal ist jede Zahl ein Ausdruck, der die Zahl selbst zurückgibt. Zahlen stehen übrigens grundsätzlich nicht in Anführungszeichen. Damit haben wird 3 Ausdrücke in dieser Zeile, aber es werden noch mehr. "2 * 4" ist der nächste Ausdruck, der die 2 einzelnen Ausdrücke verbindet und das Ergebnis hiervon zurückgibt. Der Wert dieses Ausdruckes ist also "8". Und als letztes folgt noch die Zusammensetzung von dem Ergnis "8" mit der "3" zu einem Ausdruck zu dem entgültigen Ergebnis "11". Wir haben also 5 Ausdrücke in dieser Zeile.

Die letzte Zeile gibt beim Ausführen "false" zurück. Was ist das denn? Nun hier werden zwei Zahlen verglichen, die nicht gleich sind. Das Ergebnis dieses Vergleiches ist also "falsch" und aus Englisch "false". Wo haben wir hier die Ausdrücke? Nun man ahnt es vermutlich schon. Erstmal sind die Zahlen "1" und "2" Ausdrücke. Nun kommt aber noch ein Vergleichsausdruck hinzu, der als Ergebnis keine Zahl sondern einen Wahrheitswert liefert. Es gibt nur 2 Wahrheitswerte: "false" wenn die Vergleichsbedingung nicht erfüllt ist und "true" wenn sie erfüllt ist.

Typ eines Ausdrucks

Wie man an den Beispielen sieht, können unterschiedliche Ergebnistypen bei Ausdrücken herauskommen. In den Beispielen ist das zuerst eine Zeichenfolge, dann eine Zahl und dann ein Wahrheitswert. Dies muss man bedenken, weil die meisten Funktionen (im Gegensatz zu WriteLine) keine belibigen Typen akzeptieren. Manchmal wird eine Zahl erwartet und dann sollte auch eine Zahl übergeben werden. Sonst wird man eine Fehlermeldung erhalten. Auch die Operatoren ("+","*","=" und viele mehr) erwarten bestimmte Typen bei den Ausdrücken links und rechts davon. Beispielsweise kann man keine Zeichenfolge zu einer Zahl addieren; dies würde auch einen Fehler verursachen.

Zusammenfassung

  • Ausdrücke haben immer einen Rückgabetyp und einen Rückgabewert.
  • Bei Operatoren muss der Typ beider Ausdrücke (links und rechts davon) stimmen, sonst gibt es einen Fehler.
  • Bei Funktionsaufrufen wird oft auch ein bestimmter Typ erwartet.
Persönliche Werkzeuge