Arrays

Aus X-Lexikon
Zur Navigation springenZur Suche springen

Achtungzeichen.gif Achtung: Diese Seite ist in Bearbeitung durch 4th Fleet Commander. Solange dieses Banner hier steht, werden sämtliche Änderungen ohne Vorwarnung überschrieben.



Nun soll es um Arrays gehen. Die Arrays braucht man relativ häufig beim Scripten in X³: TC, da sie eine wichtige Variablenform darstellen.
Die meisten der Script-Befehle zu Arrays finden sich unter: "General Commands" -> "Arrays"

Was ist ein Array?

Ein Array ist erst einmal nur eine Variable, jedoch eine ganz besondere. Eine normale Variable kann nur einen Wert aufnehmen, z.B. eine Zahl, einen Namen, eine Schiffsklasse einen Sektor etc.
Ein Array kann jedoch mehrere Werte in sich aufnehmen. Hierzu nutzt es sogenannte Indizes, an denen die einzelnen Werte gespeichert werden. Die einzelnen Werte können auch verschieden sein, man kann also durchaus Zahlen zusammen mit Schiffen in ein Array packen. Man kann auch mehrere Arrays ineinander packen, dies macht vor allem bei Flottenverbänden für die KI einen Sinn.

Wie ist ein Array aufgebaut?

Wir schauen uns zunächst einmal den Grundcode eines Arrays an. Der sieht folgendermaßen aus:

So sieht ein Array aus. Nun wollen wir uns das ganze mal detaillierter anschauen:

An erster Stelle steht das Wort ARRAY. Dieses dient im Grunde nur dazu, damit man weiß, dass es sich um ein Array handelt. In den Klammern stehen nun die im Array enthaltenen Werte.
Die einzelnen Werte sind durch Kommata voneinander getrennt. Die Kommata markieren die einzelnen Indizes. Wichtig: Der erste Index (hier ist dort "Buster" gespeichert) hat die Nummer 0, und nicht die 1.

Wie lese ich ein Array aus?

Die Werte aus dem Array kann man nun per Code abfragen. Dazu verwendet man den Namen des Arrays, gefolgt von der Nummer des Index, die in eckigen Klammern geschrieben wird. Wir nennen unser Array nun einmal "Testarray", und fragen nun die Werte ab.
Wir möchten nun den Wert "Energiezellen" aus dem Array auslesen. Dieser steht an fünfter Stelle im Array, doch da der erste Index die Nummer 0 hat, stehen die Energiezellen an Index Nummer 4.

Der Befehl sieht nun folgendermaßen aus:

Die Variable "$Ergebnis" würde hier nun den Wert "Energiezellen" annehmen.

Wenn man jetzt aber das Array nicht selbst erstellt hat, oder man aus sonstigen Gründen nicht weiß, wie viele Indizes das Array hat, so kann man das abfragen. Das macht man mit dem Befehl:

Dieser Befehl liefert nun die Größe des Arrays, sprich also, wie viele Indizes darin enthalten sind. Wichtig: Dieser Wert entspricht nicht der Nummer des letzten Index', da der erste Index ja wieder die Nummer 0 hat. So muss hier 1 abgezogen werden, um die Nummer des letzten Index zu ermitteln.

Systematisches Auslesen

Man kann so ein Array jetzt auch systematisch auslesen. Dies macht man mit der "while-Schleife", die schon vorher erklärt wurde.

Vorgehensweise:
Das Script soll nun folgendes machen:

  • Größe des Arrays ermitteln
  • Eine Zähler-Variable auf diese Größe setzen
  • Die while-Schleife beginnen
  • Die Zählervariable um 1 senken
  • Den Wert des Arrays am Index der Zählervariable auslesen
  • Mit diesem Wert arbeiten
  • Die Schleife beenden

Und so sieht der zugehörige Code aus:

Wir schauen uns nun mal den Ablauf des Scriptes an, und zwar an einem einfachen Array. Dieses Array sieht folgendermaßen aus:

Wir merken uns:Die 3 steht an Index 0; die 5 an Index 1; die 7 an Index 2. Nun führen wir das Script aus:

  • Zuerst wird die Größe des Arrays ausgelesen. Das Array hat 3 Indizes, also ist die Variable $zaehler nun = 3.
  • Jetzt kommt die Prüfung: while $zaehler > 0. Die Variable hat den Wert 3, das ist größer 0, also wird die Schleife ausgeführt.
  • Nun wird $zaehler um 1 erniedrigt, die Variable hat also jetzt den Wert 2.
  • Jetzt wird der Wert ausgelesen, und als Index wird hier $zaehler verwendet. Diese Variable hat den Wert 2, also wird der zweite Index genommen. Am zweiten Index steht jetzt die 7, die Variable $array.wert hat nun also den Wert 7.
  • Der "wait"-Befehl dient nur zur Schonung der Performance.
  • Das end definiert das Ende der Schleife, nun wird also wieder zur Einstiegsbedingung zurückgekehrt.
  • Wieder die Prüfung, $zaehler ist 2, und da 2 > 0 ist die Bedingung erfüllt.
  • Anschließend wird $zaehler um 1 erniedrigt, hat jetzt also den Wert 1.
  • Jetzt wird wieder der Arraywert ausgelesen, und zwar nun am Index Nr. 1. Die Variable $array.wert hat jetzt also den Wert 5.
  • wait und end dürften bekannt sein, also wieder zur Bedingung nach oben.
  • $zaehler hat den Wert 1, und 1 > 0 , also ist die Bedingung erfüllt.
  • $zaehler wird um 1 erniedrigt, hat also jetzt den Wert 0.
  • wieder wird ausgelesen, und zwar am Index 0. Die Variable $array.wert hat nun den Wert 3.
  • wieder wait und end, nun zurück zur Bedingung
  • $zaehler hat nun den Wert 0. Nun wird geprüft, ob $zaehler > 0 ist, also wird geprüft, ob 0 > 0 ist. Das ist jedoch nicht der Fall, und so wird die Schleife nun nicht mehr durchlaufen.

Jetzt wurden alle Werte im Array ausgelesen.

Arrays selber erstellen

Man kann Arrays auch selbst erstellen. Dazu muss zunächst ein grundlegendes Array erstellt werden. Das macht man mit dem Befehl:

Unter "<RetVar>" kann der Name des Arrays eingestellt werden. Wir nennen unseres einfach mal "Testarray". Unter "size=<Var/Number>" kann die Größe des Arrays eingestellt werden.

Beim Festlegen der Größe gibt es 2 Möglichkeiten: Einmal kann man hier eine feste Größe vorgeben und dann die einzelnen Indizes mit Werten bestücken, oder man erstellt ein Array mit der Größe 0, also mit keinem einzigen Index, und fügt dann mittels "append" die Werte hinzu. Obwohl letztere Methode fast immer praktischer ist, werden im Folgenden beide Methoden erklärt.

Erstellen eines Arrays mit fester Größe

Hierzu erstellen wir mit dem oben genannten Befehl einfach das Array. Als Beispiel wollen wir 5 Indizes haben, also erstellen wir ein Array der Größe 5. Beachtet, dass dabei dann die Indizes von 0-4 vergeben werden können. So sieht der Befehl aus:

Nun haben wir ein Array erstellt bei dem wir die Indizes 0-4 vergeben können. Als Beispiel wollen wir nun wieder das Array erstellen, und danach den Index Nummer 3 mit dem Wert "1" bestücken. Das sieht dann folgendermaßen aus:

So kann nun auch mit den anderen Indizes verfahren werden.

Erstellen eines Arrays mit Nutzung der Methode "append"

Hierzu erstellt man das Array mit der Größe 0. Also sieht die erste Zeile des Codes so aus:

Nun haben wir ein komplett leeres Array.

Die Methode "append" macht nichts anderes, als am Ende des Arrays einen weiteren Index dranzuhängen. Das heißt, wenn ich ein Array habe mit den Indizes 0-4, und ich nehme "append", dann wird ein neuer Index hinten angehängt.

Wir fügen nun mittels "append" unserem Array die Zahl 84 hinzu. So sieht das dann aus:

Nun wird ein Index an das Array angehängt, der den Wert 84 beinhaltet.

Unser gesamtes Array sieht nun so aus:

Wie man hier sieht, steht dort öfters mal der Ausdruck "null". Der sagt einfach nur aus, dass an dem Index noch nichts ist, er steht also nicht für die Zahl 0, sondern eher für "nichts".