dbLounge
benutzerdefinierte Datentypen
Wenn die zur Verfügung stehenden Datentypen nicht für die benötigten Zwecke ausreichen, kann man in Darkbasic Professional - wie in den meisten anderen Programmiersprachen auch - eigene Datentypen definieren. Das sind sozusagen zusammengefasste Variablen bekannter Datentypen.
Benutzerdefinierte Datentypen machen die Organisierung von zusammengehörigen Daten einfacher und helfen so, ein Programm übersichtlicher zu halten.



Hier ein Beispiel um das Prinzip zu verdeutlichen:



In einem Spiel sollen Energie, Munition, Position etc. der Spieler verwaltet werden. Es gibt z.B. 2 befreundete Spieler und 5 Gegner.
Der ungünstigste Weg wäre hier, alle Variablen per Hand zu definieren:



Spieler1_Energie=100

Spieler2_Energie=100

Gegner1_Energie=100

...



Der erste Schritt, um diese Daten effektiver zu verwalten wäre der Einsatz von Arrays:



DIM Energie(7)

DIM Munition(7)

DIM Position(2,7)



For i=1 to 7

Energie(i)=100

Next i

...



Hier lassen sich die einzelnen Daten immerhin schon per For-Next-Schleife automatisch durchlaufen, und die Variablen müssen nicht für jeden Spieler einzeln initialisiert werden.

Trotzdem muss für jede Eigenschaft ein eigenes Array angelegt werden, was auch unübersichtlich werden kann. Hier lohnt sich deshalb der Einsatz von benutzerdefinierten Datentypen/Types:



TYPE Koordinate

X

Y

ENDTYPE



TYPE SpielerDaten

Position AS Koordinate

Name AS STRING

Energie

Munition

...

ENDTYPE



DIM Spieler(7) AS SpielerDaten



...



Alle Daten, die zu einem Spieler gehören, stehen nun auch in einer Variable. Demnach braucht auch nur ein Spieler-Array angelegt werden.




Deklaration:



Alle verwendeten Datentypen werden zu Beginn des Programms folgendermaßen deklariert:



TYPE DatentypName

Variable1

Variable2 AS Datentyp

...

ENDTYPE



Die Deklaration wird mit TYPE eingeleitet. In den nächten Zeilen folgen die Variablen, die der Datentyp enthalten soll. Für diese kann mit AS ein Datentyp (sowohl ein feststehender wie z.B. String, als auch ein zuvor definierter eigener) bestimmt werden. Ansonsten wird die Variable als Integer gedeutet. Mit ENDTYPE wird die Deklaration geschlossen.


Auch eine Deklaration in einer Zeile ist möglich:



TYPE DatentypName Variable1 Variable2 Variable3 ENDTYPE





Anwendung:



Ein benutzerdefinierter Datentyp wird wie andere Datentypen auch per AS einer Variable zugewiesen:


Endgegner AS Spieler


Das funktioniert natürlich auch beim Dimensionieren von Arrays.
Um auf die Untervariablen einer solchen Variable zuzugreifen, trennt man diese mit einem Punkt vom Variablenname:


if Treffer then dec Entgegner.Energie

...

position object 1, Spieler.Position.X, Spieler.Position.Y, Spieler.Position.Z