MIDGARD · Multi User Dungeon Alpha 0.1

Kapitel 6: Kontrollstrukturen & Schleifen

In diesem Kapitel lernst du, wie dein Programm Entscheidungen trifft und Dinge mehrfach ausführt. Kontrollstrukturen bestimmen den Programmfluss – also wann, wie oft und unter welchen Bedingungen Code ausgeführt wird. Dieses Wissen ist absolut grundlegend für alles Weitere im LPC.

Weiter zu Kapitel 7

Danach: Arrays und Mappings im Detail.

6.1 Was sind Kontrollstrukturen?

Normalerweise wird Code von oben nach unten ausgeführt – Zeile für Zeile. Kontrollstrukturen erlauben es dir, diesen Ablauf zu verändern.

Du kannst damit:

  • Entscheidungen treffen (if, else)
  • Code mehrfach ausführen (Schleifen)
  • Unterschiedliche Fälle behandeln (switch)
  • Schleifen gezielt verlassen (break, continue)

Ohne Kontrollstrukturen wäre LPC extrem eingeschränkt.

6.2 Die if-Anweisung – Entscheidungen treffen

Die if-Anweisung prüft eine Bedingung. Ist sie wahr (true bzw. ≠ 0), wird der Codeblock ausgeführt.


if (x > 10)
{
  write("x ist größer als 10.\n");
}
      

Wichtig: In LPC gilt 0 als falsch, alles andere als wahr.

6.3 if ohne geschweifte Klammern

Besteht der Codeblock nur aus einer einzigen Anweisung, kannst du die geschweiften Klammern weglassen.


if (hp <= 0)
  die();
      

Anfänger-Tipp: Nutze Klammern trotzdem – sie vermeiden Fehler.

6.4 if und else

Mit else definierst du, was passiert, wenn die Bedingung nicht erfüllt ist.


if (level >= 10)
{
  write("Du darfst eintreten.\n");
}
else
{
  write("Du bist noch zu schwach.\n");
}
      

6.5 Mehrere Bedingungen: else if

Für mehr als zwei Fälle nutzt man else if.


if (level < 5)
{
  write("Anfänger.\n");
}
else if (level < 20)
{
  write("Fortgeschrittener.\n");
}
else
{
  write("Veteran.\n");
}
      

Die Bedingungen werden von oben nach unten geprüft. Sobald eine zutrifft, wird der Rest übersprungen.

6.6 Vergleichs- und logische Operatoren

Typische Vergleichsoperatoren:

  • == gleich
  • != ungleich
  • <, >, <=, >=

Logische Operatoren:

  • && UND
  • || ODER
  • ! NICHT

if (pl && pl->query_level() >= 10)
{
  write("Zugriff erlaubt.\n");
}
      

6.7 Die while-Schleife

Eine while-Schleife wiederholt Code, solange eine Bedingung wahr ist.


int i;

i = 0;
while (i < 5)
{
  write("i = " + i + "\n");
  i++;
}
      

Achtung: Wenn die Bedingung nie falsch wird, entsteht eine Endlosschleife!

6.8 Die for-Schleife

Die for-Schleife ist kompakter und wird häufig für Zählvorgänge genutzt.


int i;

for (i = 0; i < 5; i++)
{
  write("i = " + i + "\n");
}
      

Aufbau:

  • Initialisierung
  • Bedingung
  • Änderung

6.9 Schleifen über Inventare

Sehr typisch im Midgard MUDn: Schleifen über Inventare von Objekten.


object ob;
object *inv;

inv = all_inventory(this_player());

foreach (ob : inv)
{
  write(object_name(ob) + "\n");
}
      

foreach ist besonders lesbar und ideal für Anfänger.

6.10 break und continue

break beendet eine Schleife sofort.


while (1)
{
  if (x > 10)
    break;
}
      

continue springt zum nächsten Durchlauf.


for (i = 0; i < 10; i++)
{
  if (i == 5)
    continue;

  write(i + "\n");
}
      

6.11 Die switch-Anweisung

switch eignet sich für viele feste Fälle.


switch (race)
{
  case "elf":
    write("Du bist ein Elf.\n");
    break;

  case "zwerg":
    write("Du bist ein Zwerg.\n");
    break;

  default:
    write("Unbekannte Rasse.\n");
}
      

Ohne break läuft der Code weiter – das ist eine häufige Fehlerquelle!

6.12 Typische Anfängerfehler

  • Endlosschleifen
  • = statt ==
  • break im switch vergessen
  • Zu verschachtelte if-Blöcke

6.13 Mini-Übungen

  1. Schreibe eine Schleife, die von 1 bis 10 zählt.
  2. Prüfe, ob ein Spieler ein bestimmtes Level hat.
  3. Gib alle Gegenstände im Inventar aus.

6.14 Zusammenfassung

  • if steuert Entscheidungen
  • Schleifen wiederholen Code
  • break und continue steuern Schleifen
  • switch vereinfacht viele Fälle

Kontrollstrukturen geben dir Kontrolle über dein Programm. Ohne sie wäre LPC praktisch nutzlos.

Ausblick

In Kapitel 7 lernst du Arrays und Mappings – komplexe Datenstrukturen, die in LPC ständig benutzt werden.

Weiter zu Kapitel 7