Końcowa interakcja
Część sekcji Programowanie obiektowe ścieżki Rust w Coddy. Lekcja 23 z 61.
Wyzwanie
ŁatwyGratulacje z okazji stworzenia Wirtualnego Zwierzaka! W tym ostatnim kroku połączysz wszystko, symulując pełną sesję interakcji ze swoim zwierzakiem, tak aby wszystkie napisane przez Ciebie metody działały razem.
Moduł pet.rs jest już kompletny: new, metody pobierające, set_energy, set_hunger, feed, play i status. Napisz tylko main.rs.
Otrzymasz trzy dane wejściowe — takie same jak we wcześniejszych krokach:
- Imię zwierzaka
- Początkowy poziom energii zwierzaka
- Początkowy poziom głodu zwierzaka
W main.rs wykonaj następującą sekwencję:
- Utwórz zwierzaka z podanym imieniem, a następnie ustaw jego poziom energii i głodu na podstawie danych wejściowych
- Wyświetl raport o stanie
- Pobaw się ze swoim zwierzakiem dwa razy
- Nakarm zwierzaka raz
- Wypisz linię separatora
--- After Activities --- - Ponownie wyświetl raport o stanie
Pamiętaj, jak zmieniają się statystyki: zabawa kosztuje 20 punktów energii i dodaje 15 punktów głodu, karmienie zmniejsza głód o 30, poziom energii nigdy nie spada poniżej 0, a głód nigdy nie wzrasta powyżej 100. Nastrój jest happy, gdy poziom energii wynosi co najmniej 50, a głód nie przekracza 50; w przeciwnym razie jest tired. Zwierzak może więc rozpocząć sesję w dobrym nastroju, a zakończyć ją zmęczony.
Na przykład dla danych wejściowych Luna, 50 i 50:
--- Status Report ---
Name: Luna
Energy: 50
Hunger: 50
Mood: happy
Luna had fun playing!
Luna had fun playing!
Luna enjoyed the meal!
--- After Activities ---
--- Status Report ---
Name: Luna
Energy: 10
Hunger: 50
Mood: tiredTo ostatnie wyzwanie pokazuje kompletny system Wirtualnego Zwierzaka, który został przez Ciebie zbudowany: moduł z prywatnymi polami, metodami pobierającymi i ustawiającymi oraz metodami, które współpracują ze sobą w ramach jednej interaktywnej sesji.
Spróbuj swoich sił
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");
// TODO: utwórz zwierzaka i ustaw jego poziom energii oraz głodu na podstawie danych wejściowych
// TODO: wyświetl pierwszy raport o stanie
// TODO: pobaw się dwa razy, a potem nakarm raz
// TODO: wyświetl separator "--- After Activities ---"
// TODO: wyświetl końcowy raport o stanie
}
Wszystkie lekcje w sekcji Programowanie obiektowe
1Metody i zachowanie
Wprowadzenie do bloków implementacjiParametr selfMetody modyfikująceFunkcje powiązaneWiele bloków implementacjiŁańcuchowe wywoływanie metodPowtórzenie — działania na prostokącie4Projekt: Wirtualne zwierzątko
Definiowanie zwierzątkaKarmienie zwierzątka7Standardowe cechy
Cecha DebugCecha DisplayClone i CopyCechy równościPowtórka – punkt do wydrukowania10Projekt: System dokumentów
Trait DrawKomponent tekstowy2Hermetyzacja i moduły
Podstawy modułówSłowo kluczowe publicPola prywatneGetterySetteryPodsumowanie — bezpieczna skrytka5Typy generyczne
Struktury generyczneMetody generyczneWiele typów generycznychFunkcje generycznePodsumowanie – punkt współrzędnych8Cechy jako ograniczenia
Składnia ograniczeń cechWiele ograniczeńKlauzula whereZwracanie typów z użyciem cechPodsumowanie — generyczna drukarka11Wzorce projektowe w Rust
Wzorzec NewtypeKompozycjaTrait DropFrom i IntoPodsumowanie — atrapowy inteligentny wskaźnik3Zaawansowane typy wyliczeniowe
Typy wyliczeniowe z danymiMetody typów wyliczeniowychDopasowywanie wariantów danychTyp wyliczeniowy Option — powtórzeniePodsumowanie — typ wyliczeniowy Shape6Definiowanie cech
Czym jest cecha?Implementowanie cechImplementacje domyślneNadpisywanie wartości domyślnychCechy z parametramiPowtórzenie — odtwarzacz multimedialnyPoćwicz samodzielnie: Kompilator Rust online