Array – Mappedia

Array

Aus Mappedia
Wechseln zu: Navigation, Suche

Ein Array (engl. für: Feld) ist eine spezielle Form der Variable. Sie hat nichts mit dem Typ der Variable zu tun, sondern erweitert die Variable um die Fähigkeit, nicht nur einen Wert aufzunehmen, sondern annähernd beliebig viele. Dabei erfolgt die Auswahl des konkreten Wertes über die Angabe eines Index, in Form eines Integers. Der Index steht in eckigen Klammern hinter dem Namen der Variable. Durch Arrays ist es möglich eine Variable erst während des Spiels konkret durch einen Trigger auswählen zu lassen. Das ist beispielsweise dann nützlich, wenn etwas für jeden Spieler gespeichert werden soll (Punkte, Kills, Helden). In diesem Fall würde man eine Array-Variable (kurz: Array) erstellen, und bei jedem Zugriff darauf die Nummer des jeweiligen Spielers als Index verwenden. Ein Zugriff auf ein Array, ohne Index, ist nicht möglich.

Erstellen

Ein Array erstellt man im Interface so, wie eine Variable. Man öffnet im AE-Button.jpg Auslöser-Editor die Var-Button.jpg Variablen-Übersicht und erstellt eine NeuVar-Button.jpg neue Variable. Allerdings macht man noch ein Häkchen bei Array und stellt die Größe ein. Die Bezeichnung "Größe" ist hierbei irreführend. Sie bedeutet nicht, dass das Array nur so viele Elemente aufnehmen kann. Die Variable erhält in den Indizes von 0 bis zur eingestellten Größe den angegebenen Startwert. Die tatsächliche Größe der Arrays in Jass beträgt 2^13=8192 (von 0 bis 8191). Dieser Wert ist technisch bedingt. Wird ein Wert eines Indizes außerhalb dieses Bereiches abgerufen, so erhält man immer 0, 0.00, "" oder null.

In Jass deklariert man ein Array, indem man hinter den Typ noch "array" hinzufügt. Zum Beispiel:

local unit array MeineEinheiten

Will man sich den Wert eines Arrays zurückgeben lassen, so schreibt man den Index auch in Jass in eckigen Klammern.

call KillUnit(MeineEinheiten[0])

Zugriff

Wählt man in einem Auslöser beispielsweise für eine Aktion eine Variable aus, die ein Array ist, so erscheint dahinter automatisch ein Link zur Eingabe des Index'.

Im folgenden Beispiel werden mittels einer Schleife mehrere Einheiten erzeugt und nacheinander in einem Array gespeichert:

Unit Create
Ereignisse
Bedingungen
Aktionen
For each (Integer A) from 1 to 20 do (Actions)
Einheit - Create 1 Soldat for Spieler 1 (Rot) facing Vorgabe für Gebäude-Ausrichtung
Set UnserArray[Integer A] = (Last created Unit)

So können die Einheiten auch leicht und schnell wieder entfernt werden:

Unit Remove
Ereignisse
Bedingungen
Aktionen
For each (Integer A) from 1 to 20 do (Einheit - Remove UnserArray[Integer A])
Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Warcraft-Mapping
Werkzeuge