Menu
Coddy logo textTech

Zabawa ze zwierzątkiem

Część sekcji Programowanie obiektowe ścieżki Rust w Coddy. Lekcja 21 z 61.

challenge icon

Wyzwanie

Łatwy

Twój zwierzak jest najedzony i szczęśliwy — teraz zapewnijmy mu trochę ruchu! W tym kroku dodasz metodę play, która pozwoli ci wchodzić w interakcje z twoim wirtualnym towarzyszem.

Zabawa ze zwierzakiem powinna kosztować go energię, ale także zwiększać jego głód. Gdy zwierzak się bawi, jego energy zmniejsza się o 20, a jego hunger zwiększa się o 15. Energia nie powinna jednak nigdy spaść poniżej 0, a głód nigdy nie powinien przekroczyć 100.

Potrzebujesz też metody pobierającej energy, aby sprawdzić, jak bardzo twój zwierzak zmęczył się podczas zabawy.

W pliku main.rs wczytaj imię zwierzaka oraz początkowe wartości energii i głodu. Po skonfigurowaniu zwierzaka wywołaj raz metodę play i wyświetl poziomy energii i głodu.

Metoda play powinna wyświetlić komunikat informujący, że twój zwierzak dobrze się bawił:

{name} had fun playing!

Następnie plik główny powinien wyświetlić statystyki:

Energy: {energy_level}
Hunger: {hunger_level}

Na przykład, jeśli dane wejściowe to:

Buddy
50
30

Wynik powinien być następujący:

Buddy had fun playing!
Energy: 30
Hunger: 45

Jeśli początkowa energia wynosi 10, zabawa zmniejszy ją do 0 (nie do wartości ujemnej). Jeśli początkowy głód wynosi 90, podczas zabawy zostanie ograniczony do 100.

Dodaj metodę set_energy obok istniejącej metody set_hunger, aby zainicjować obie wartości na potrzeby testowania.

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");

    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());
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Rust online