Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Enums und Zustände

Du kennst jetzt Structs für zusammengehörige Daten. Aber was, wenn etwas verschiedene Zustände haben kann? Dafür gibt es Enums!

Was ist ein Enum?

Ein Enum (Aufzählung) definiert, welche Möglichkeiten es gibt. Zum Beispiel eine Ampel:

enum Ampel {
    Rot,
    Gelb,
    Gruen,
}

Eine Ampel ist entweder rot oder gelb oder grün – aber niemals zwei gleichzeitig!

Einen Enum verwenden

So verwendest du einen Enum:

let farbe = Ampel::Rot;

Mit match kannst du auf verschiedene Werte reagieren:

match farbe {
    Ampel::Rot => turtle.write_text("Stopp!", 50.0),
    Ampel::Gelb => turtle.write_text("Achtung!", 50.0),
    Ampel::Gruen => turtle.write_text("Fahr!", 50.0),
}

Übung: Turtle mit Richtung

Probier dieses Beispiel:

    let richtung = Richtung::Rechts;

    match richtung {
        Richtung::Oben => turtle.left(90.0),
        Richtung::Rechts => turtle.right(0.0),
        Richtung::Unten => turtle.right(90.0),
        Richtung::Links => turtle.right(180.0),
    };

    turtle.forward(100.0);

Ändere die Richtung und schau, was passiert!

Enum für Spielzustand

Enums sind perfekt für Spielzustände:

enum Spielstand {
    Laeuft,
    Gewonnen,
    Verloren,
}

let zustand = Spielstand::Laeuft;

match zustand {
    Spielstand::Laeuft => turtle.write_text("Spiel läuft noch...", 50.0),
    Spielstand::Gewonnen => turtle.write_text("Du hast gewonnen! 🎉", 50.0),
    Spielstand::Verloren => turtle.write_text("Verloren 💀", 50.0),
}

Übung: Turtle-Quadrat mit Farbe

Erstelle ein Programm, das:

  • Einen Enum Farbe mit Rot, Gruen, Blau hat
  • Je nach gewählter Farbe ein Quadrat in dieser Farbe zeichnet
Tipp
    let farbe = Farbe::Gruen;  // Ändere das!
    
    match farbe {
        Farbe::Rot => turtle.set_pen_color(RED),
        Farbe::Gruen => turtle.set_pen_color(GREEN),
        Farbe::Blau => turtle.set_pen_color(BLUE),
    };
    
    // Zeichne Quadrat
    for _ in 0..4 {
        turtle.forward(80.0);
        turtle.right(90.0);
    }

Zusammenfassung

  • Enums definieren Auswahlmöglichkeiten
  • Definition: enum Name { Variante1, Variante2, ... }
  • Verwendung: Name::Variante
  • match reagiert auf verschiedene Varianten
  • Perfekt für Zustände (Ampel, Spielstand, Richtung)

Du hast jetzt wichtige Grundlagen: Text, Listen, Structs und Enums. Im nächsten Kapitel lernst du, wie der Benutzer selbst Eingaben machen kann!