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
FarbemitRot,Gruen,Blauhat - 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 matchreagiert 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!