Menu
Coddy logo textTech

Игры с питомцем

Часть раздела Object Oriented Programming путешествия по Rust на Coddy — урок 21 из 61.

challenge icon

Задание

Легко

Ваш питомец накормлен и доволен — теперь давайте дадим ему немного физической нагрузки! На этом этапе вы добавите метод play, который позволит вам взаимодействовать с вашим виртуальным компаньоном.

Игры с питомцем должны расходовать энергию, но также делать его более голодным. Когда ваш питомец играет, его energy уменьшается на 20, а hunger увеличивается на 15. Однако энергия никогда не должна опускаться ниже 0, а голод никогда не должен превышать 100.

Вам также понадобится геттер-метод energy, чтобы проверять, насколько устал ваш питомец после игры.

В вашем файле main.rs считайте имя питомца вместе с начальными значениями энергии и голода. После настройки питомца вызовите play один раз и выведите уровни энергии и голода.

Метод play должен выводить сообщение о том, что вашему питомцу было весело:

{name} had fun playing!

Затем ваш основной файл должен вывести статистику:

Energy: {energy_level}
Hunger: {hunger_level}

Например, если на вход подается:

Buddy
50
30

Вывод должен быть следующим:

Buddy had fun playing!
Energy: 30
Hunger: 45

Если энергия начинается с 10, игра доведет ее до 0 (не до отрицательного значения). Если голод начинается с 90, игра ограничит его значением 100.

Вам нужно будет добавить метод set_energy наряду с существующим set_hunger, чтобы инициализировать оба значения для тестирования.

Попробуйте сами

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

Все уроки раздела Object Oriented Programming