Menu
Coddy logo textTech

Финальное взаимодействие

Часть раздела Объектно-ориентированное программирование путешествия по Rust на Coddy. Урок 23 из 61.

challenge icon

Задание

Легко

Поздравляем с созданием Virtual Pet! На этом последнем шаге ты объединишь всё вместе, смоделировав полный сеанс взаимодействия со своим pet, чтобы каждый написанный тобой метод работал одновременно с остальными.

Модуль pet.rs предоставлен тебе полностью: new, геттеры, set_energy, set_hunger, feed, play и status. Тебе нужно написать только main.rs.

Ты получишь три входных значения — те же три, что и на предыдущих шагах:

  1. имя pet
  2. количество энергии, с которым начинает pet
  3. уровень голода, с которым начинает pet

В main.rs выполни следующую последовательность:

  1. Создай pet с указанным именем, затем установи его энергию и голод на основе входных данных
  2. Выведи отчёт о состоянии
  3. Поиграй со своим pet дважды
  4. Покорми своего pet один раз
  5. Выведи строку-разделитель --- After Activities ---
  6. Снова выведи отчёт о состоянии

Помни, как изменяются характеристики: игра отнимает 20 энергии и добавляет 15 голода, кормление уменьшает голод на 30, энергия никогда не опускается ниже 0, а голод никогда не поднимается выше 100. Настроение равно happy, когда энергия равна 50 или больше, а голод равен 50 или меньше; в противном случае настроение равно tired, поэтому pet может начать сеанс в хорошем настроении, а закончить его уставшим.

Например, при входных данных Luna, 50 и 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: tired

В этом последнем испытании показана полностью созданная тобой система Virtual Pet: модуль с приватными полями, геттерами, сеттерами и методами, которые работают вместе в рамках одного интерактивного сеанса.

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

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: создайте питомца и установите его energy и hunger из ввода

    // TODO: print the first status report

    // TODO: play дважды, затем feed один раз

    // TODO: print the separator "--- After Activities ---"

    // TODO: print the final status report
}

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор Rust