MIDGARD · Multi User Dungeon Alpha 0.1

Kapitel 3: Datentypen in LPC

In diesem Kapitel lernst du die wichtigsten Datentypen von LPC kennen. Datentypen sind das Fundament jeder Programmiersprache – sie bestimmen, was ein Wert ist, was man damit tun darf und was nicht. Wir gehen langsam vor, mit vielen Beispielen und Erklärungen für absolute Anfänger.

Weiter zu Kapitel 4

Danach: Variablen, Gültigkeitsbereiche und Speicher.

3.1 Was sind Datentypen überhaupt?

Ein Datentyp beschreibt, welche Art von Information in einer Variable gespeichert wird. Ein Name ist etwas anderes als eine Zahl. Ein Objekt ist etwas anderes als ein Text. LPC muss das wissen, um korrekt arbeiten zu können.

Vergleich aus dem echten Leben:

  • Eine Zahl → kannst du addieren
  • Ein Text → kannst du anzeigen
  • Ein Objekt → kannst du bewegen oder abfragen

LPC ist dabei streng, aber nicht kleinlich. Viele Fehler von Anfängern entstehen, weil Datentypen verwechselt werden. Dieses Kapitel soll genau das verhindern.

3.2 Der Datentyp int – ganze Zahlen

int steht für Integer, also ganze Zahlen. Das sind Zahlen ohne Komma.

Beispiele für int-Werte

0
1
-5
42
100000
        

Typische Verwendung:

  • Lebenspunkte
  • Level
  • Zähler
  • Zufallswerte
int in einer Variable

int hp;
hp = 50;

hp = hp - 10;   // Schaden
hp = hp + 5;    // Heilung
        

Wichtig: Es gibt keine Kommazahlen mit int. 3.5 ist kein gültiger int-Wert.

3.3 Der Datentyp string – Texte

Ein string ist Text. Alles, was in Anführungszeichen steht, ist ein String.

Strings in LPC

"Hallo Welt"
"Ein langer Text mit Leerzeichen"
"123"          // das ist Text, keine Zahl!
        

Strings werden sehr oft benutzt:

  • Namen
  • Beschreibungen
  • Ausgaben an Spieler
String-Variable

string name;

name = "Ein alter Baum";
write(name);
        

Häufiger Anfängerfehler: "10" ist nicht dasselbe wie 10. Das erste ist Text, das zweite eine Zahl.

3.4 Der Datentyp object – Dinge in der Welt

Einer der wichtigsten Datentypen in LPC ist object. Ein Objekt ist ein echtes Ding in der Spielwelt:

  • Spieler
  • Räume
  • NPCs
  • Items
Object-Variable

object room;

room = environment(this_player());
        

Mit Objekten kannst du Funktionen aufrufen:

Funktion auf Objekt aufrufen

object pl;

pl = this_player();
write(pl->name());
        

Merksatz: Ohne Objekte gibt es kein MUD. LPC ist eine objektorientierte Sprache.

3.5 Der Datentyp mixed – alles und nichts

mixed ist ein besonderer Typ. Er kann jeden anderen Datentyp enthalten.

mixed in Aktion

mixed x;

x = 10;
x = "Hallo";
x = this_player();
        

Das ist praktisch, aber auch gefährlich:

  • ✔ flexibel
  • ✘ weniger übersichtlich
  • ✘ mehr Fehler möglich

Empfehlung: Verwende mixed nur, wenn du es wirklich brauchst.

3.6 Arrays – mehrere Werte in einer Variable

Ein Array ist eine Liste von Werten. In LPC werden Arrays mit ({ ... }) geschrieben.

Array mit Zahlen

int *numbers;

numbers = ({ 1, 2, 3, 4 });
        
Array mit Strings

string *names;

names = ({ "Thor", "Odin", "Freya" });
        

Zugriff auf einzelne Elemente:

Array-Zugriff

write(names[0]);  // "Thor"
write(names[2]);  // "Freya"
        

Achtung: Das erste Element hat immer Index 0.

3.7 Mappings – Schlüssel-Wert-Paare

Ein Mapping ist vergleichbar mit einem Wörterbuch: Ein Schlüssel zeigt auf einen Wert.

Mapping-Beispiel

mapping stats;

stats = ([
  "str" : 10,
  "dex" : 12,
  "int" : 15
]);
        
Wert aus Mapping lesen

write(stats["str"]); // 10
        

Mappings werden oft für Eigenschaften, Zustände oder Konfigurationen benutzt.

3.8 void – kein Rückgabewert

void bedeutet: Diese Funktion gibt keinen Wert zurück.

void-Funktion

void say_hello() {
  write("Hallo!\n");
}
        

Du kannst das Ergebnis einer void-Funktion nicht speichern.

3.9 Typische Anfängerfehler

  • Zahl und String verwechseln
  • Objektfunktionen auf Strings anwenden
  • mixed überall benutzen
  • Array-Indizes falsch zählen

Diese Fehler sind normal. Wichtig ist, sie zu erkennen und zu verstehen.

3.10 Zusammenfassung

  • int → ganze Zahlen
  • string → Text
  • object → Dinge in der Welt
  • mixed → alles (mit Vorsicht)
  • Arrays → Listen
  • Mappings → Schlüssel-Wert-Paare

Wenn du diese Datentypen sicher beherrschst, wird LPC deutlich einfacher.

Ausblick

Im nächsten Kapitel lernst du, wie Variablen definiert werden, wie lange sie existieren und wo sie sichtbar sind.

Weiter zu Kapitel 4

Variablen und Gültigkeitsbereiche.