Menu
Coddy logo textTech

Giocare con l'animale

Fa parte della sezione Programmazione orientata agli oggetti del percorso Rust di Coddy. Lezione 21 di 61.

challenge icon

Sfida

Facile

Il 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
30

L'output dovrebbe essere:

Buddy had fun playing!
Energy: 30
Hunger: 45

Se 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

Esercitati da solo: Compilatore Rust online