Interazione finale
Fa parte della sezione Programmazione orientata agli oggetti del percorso Rust di Coddy. Lezione 23 di 61.
Sfida
FacileCongratulazioni per aver creato il tuo animale virtuale! In questo passaggio finale metti tutto insieme simulando una sessione di interazione completa con il tuo animale, così che ogni metodo che hai scritto funzioni insieme agli altri.
Il modulo pet.rs ti viene fornito completo: new, i getter, set_energy, set_hunger, feed, play e status. Devi scrivere solo main.rs.
Riceverai tre input, gli stessi tre dei passaggi precedenti:
- Il nome dell'animale
- L'energia iniziale dell'animale
- La fame iniziale dell'animale
In main.rs, esegui questa sequenza:
- Crea l'animale con il nome fornito, poi imposta la sua energia e la sua fame usando gli input
- Visualizza il resoconto dello stato
- Gioca con il tuo animale due volte
- Dai da mangiare al tuo animale una volta
- Stampa la riga separatrice
--- After Activities --- - Visualizza di nuovo il resoconto dello stato
Ricorda come cambiano le statistiche: giocare costa 20 punti energia e aggiunge 15 punti fame, dare da mangiare riduce la fame di 30, l'energia non scende mai sotto 0 e la fame non supera mai 100. L'umore è happy quando l'energia è pari o superiore a 50 e la fame è pari o inferiore a 50, ed è tired altrimenti; quindi un animale può iniziare felice e terminare la sessione stanco.
Per esempio, con gli input Luna, 50 e 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: tiredQuesta ultima sfida mostra il sistema completo di animale virtuale che hai creato: un modulo con campi privati, getter, setter e metodi che lavorano insieme in un'unica sessione interattiva.
Provalo tu
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: crea l'animale domestico e imposta la sua energia e la sua fame in base ai dati inseriti
// TODO: stampa il primo resoconto sullo stato
// TODO: gioca due volte, poi dagli da mangiare una volta
// TODO: stampa il separatore "--- After Activities ---"
// TODO: stampa il resoconto finale sullo stato
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Metodi e comportamento
Introduzione ai blocchi implIl parametro selfMetodi mutabiliFunzioni associateBlocchi impl multipliConcatenamento di metodiRiepilogo - Azioni sul rettangolo4Progetto: animale domestico virtuale
Definire l'animaleNutrire l'animale7Trait standard
Il trait DebugIl trait DisplayClone e CopyTrait di uguaglianzaRiepilogo - Punto stampabile10Progetto: sistema di documenti
Il trait DrawComponente di testo2Incapsulamento e moduli
Nozioni di base sui moduliLa parola chiave publicCampi privatiGetterSetterRiepilogo - Armadietto sicuro5Generics
Struct genericheMetodi genericiPiù tipi genericiFunzioni genericheRipasso - Punto di coordinate8I Trait come vincoli
Sintassi dei vincoli sui traitVincoli multipliLa clausola whereRestituire tipi con i traitRiepilogo - Stampante generica11Modelli di progettazione in Rust
Pattern NewtypeComposizioneIl trait DropFrom e IntoRipasso - Mock con smart pointer3Enumerazioni avanzate
Enumerazioni con datiMetodi sulle enumerazioniCorrispondenza delle varianti con datiL'enumerazione Option ripresaRiepilogo - enumerazione Shape6Definizione dei trait
Che cos’è un trait?Implementare i traitImplementazioni predefiniteSovrascrivere le implementazioni predefiniteTrait con parametriRiepilogo - Lettore multimedialeEsercitati da solo: Compilatore Rust online