Mit dem Haustier spielen
Teil des Abschnitts Object Oriented Programming der Rust-Journey von Coddy — Lektion 21 von 61.
Aufgabe
EinfachDein Haustier ist gefüttert und glücklich – jetzt lass uns für etwas Bewegung sorgen! In diesem Schritt wirst du eine play-Methode hinzufügen, mit der du mit deinem virtuellen Begleiter interagieren kannst.
Das Spielen mit deinem Haustier sollte Energie kosten, es aber auch hungriger machen. Wenn dein Haustier spielt, verringert sich seine energy um 20 und sein hunger erhöht sich um 15. Die Energie sollte jedoch niemals unter 0 fallen und der Hunger sollte niemals 100 überschreiten.
Du wirst auch eine energy-Getter-Methode benötigen, um zu überprüfen, wie müde dein Haustier nach der Spielzeit ist.
Lies in deiner main.rs den Namen des Haustiers zusammen mit den initialen Energie- und Hungerwerten ein. Nachdem du dein Haustier eingerichtet hast, rufe play einmal auf und zeige sowohl das Energie- als auch das Hungerniveau an.
Die play-Methode sollte eine Nachricht ausgeben, die zeigt, dass dein Haustier Spaß hatte:
{name} had fun playing!Dann sollte deine Hauptdatei die Statistiken anzeigen:
Energy: {energy_level}
Hunger: {hunger_level}Wenn die Eingabe zum Beispiel wie folgt aussieht:
Buddy
50
30Sollte die Ausgabe wie folgt lauten:
Buddy had fun playing!
Energy: 30
Hunger: 45Wenn die Energie bei 10 beginnt, würde das Spielen sie auf 0 bringen (nicht negativ). Wenn der Hunger bei 90 beginnt, würde das Spielen ihn bei 100 deckeln.
Du musst eine set_energy-Methode neben deiner bestehenden set_hunger hinzufügen, um beide Werte für Tests zu initialisieren.
Probier es selbst
mod pet;
use pet::Pet;
fn main() {
let mut name = String::new();
std::io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
let mut energy_input = String::new();
std::io::stdin().read_line(&mut energy_input).expect("Failed to read line");
let initial_energy: u32 = energy_input.trim().parse().expect("Failed to parse energy");
let mut hunger_input = String::new();
std::io::stdin().read_line(&mut hunger_input).expect("Failed to read line");
let initial_hunger: u32 = hunger_input.trim().parse().expect("Failed to parse hunger");
let mut my_pet = Pet::new(name);
my_pet.set_energy(initial_energy);
my_pet.set_hunger(initial_hunger);
my_pet.play();
println!("Energy: {}", my_pet.energy());
println!("Hunger: {}", my_pet.hunger());
}Alle Lektionen in Object Oriented Programming
1Methoden und Verhalten
Einführung in ImplementierungsblöckeDer Self-ParameterVeränderliche MethodenAssoziierte FunktionenMehrere ImplementierungsblöckeMethod ChainingRückblick – Rechteck-Aktionen4Projekt: Virtuelles Haustier
Das Haustier definierenDas Haustier füttern7Standard-Traits
Das Debug-TraitDas Display-TraitClone und CopyGleichheits-TraitsZusammenfassung – Druckbarer Punkt10Projekt: Dokumentensystem
Das Draw-TraitText-Komponente2Kapselung und Module
Grundlagen der ModuleDas Public-SchlüsselwortPrivate FelderGetterSetterWiederholung – Sicherer Tresor5Generics
Generische StructsGenerische MethodenMehrere generische TypenGenerische FunktionenZusammenfassung - Koordinatenpunkt8Traits als Einschränkungen
Syntax für Trait BoundsMehrfache BoundsDie Where-KlauselTypen mit Traits zurückgebenRückblick – Generischer Drucker11Design Patterns in Rust
Newtype-PatternKompositionDas Drop-TraitFrom und IntoZusammenfassung – Smart Pointer Mock3Fortgeschrittene Enums
Enums mit DatenMethoden für EnumsMatching von DatenvariantenDas Option-Enum erneut betrachtetZusammenfassung – Shape-Enum6Definition von Traits
Was ist ein Trait?Traits implementierenStandardimplementierungenStandardimplementierungen überschreibenTraits mit ParameternZusammenfassung – Media Player