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:
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
- Schreibe eine Schleife, die von 1 bis 10 zählt.
- Prüfe, ob ein Spieler ein bestimmtes Level hat.
- 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