Giocare con l'animale
Fa parte della sezione Programmazione orientata agli oggetti del percorso Rust di Coddy. Lezione 21 di 61.
Sfida
FacileIl tuo animaletto è nutrito e felice: ora facciamogli fare un po' di esercizio! In questo passaggio aggiungerai un metodo play che ti permette di interagire con il tuo compagno virtuale.
Giocare con il tuo animaletto dovrebbe consumare energia, ma anche renderlo più affamato. Quando gioca, la sua energy diminuisce di 20 e la sua hunger aumenta di 15. Tuttavia, l'energia non dovrebbe mai scendere sotto 0 e la fame non dovrebbe mai superare 100.
Ti servirà anche un metodo getter energy per controllare quanto è stanco il tuo animaletto dopo aver giocato.
Nel tuo main.rs, leggi il nome dell'animaletto insieme ai valori iniziali di energia e fame. Dopo averlo configurato, chiama play una volta e mostra sia il livello di energia sia quello di fame.
Il metodo play dovrebbe stampare un messaggio che mostri che il tuo animaletto si è divertito:
{name} had fun playing!Poi il tuo file principale dovrebbe mostrare le statistiche:
Energy: {energy_level}
Hunger: {hunger_level}Per esempio, se l'input è:
Buddy
50
30L'output dovrebbe essere:
Buddy had fun playing!
Energy: 30
Hunger: 45Se l'energia iniziale è 10, giocando scenderà a 0 (non a un valore negativo). Se la fame iniziale è 90, giocando verrà limitata a 100.
Dovrai aggiungere un metodo set_energy accanto al metodo set_hunger già esistente per inizializzare entrambi i valori durante i test.
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");
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());
}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