Отчет о состоянии
Часть раздела Object Oriented Programming путешествия по Rust на Coddy — урок 22 из 61.
Задание
ЛегкоВаш виртуальный питомец отлично развивается! Теперь давайте дадим ему возможность сообщать о том, как он себя чувствует. На этом этапе вы добавите метод status, который предоставляет полный обзор текущего состояния вашего питомца.
Отчет о состоянии должен описывать кондицию вашего питомца на основе уровней его энергии и голода. Ваш питомец может находиться в разном настроении в зависимости от того, насколько хорошо вы о нем заботитетесь:
- Если энергия
50или выше И голод50или ниже, ваш питомец — happy - В противном случае ваш питомец — tired
Добавьте метод status в вашу структуру Pet, который принимает &self и выводит полный отчет о состоянии, показывающий имя питомца, энергию, голод и настроение.
Отчет о состоянии должен соответствовать именно этому формату:
--- Status Report ---
Name: {name}
Energy: {energy}
Hunger: {hunger}
Mood: {mood}В вашем файле main.rs считайте имя питомца, значения энергии и голода, настройте своего питомца с этими значениями, а затем вызовите метод status для отображения отчета.
Например, если на вход подается:
Buddy
70
30Вывод должен быть таким:
--- Status Report ---
Name: Buddy
Energy: 70
Hunger: 30
Mood: happyА если на вход подается:
Max
40
60Вывод должен быть таким:
--- Status Report ---
Name: Max
Energy: 40
Hunger: 60
Mood: tiredЭтот метод дает вам быстрый способ проверить самочувствие вашего питомца в любое время!
Попробуйте сами
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
1Методы и поведение
Введение в блоки реализацииПараметр SelfИзменяемые методыАссоциированные функцииНесколько блоков реализацииЦепочки вызовов методовИтоги: действия с Rectangle4Проект: Виртуальный питомец
Определение питомцаКормление питомца2Инкапсуляция и модули
Основы модулейКлючевое слово PublicПриватные поляГеттерыСеттерыИтоги — Безопасный сейф5Обобщения
Обобщённые структурыОбобщённые методыНесколько обобщённых типовОбобщённые функцииПовторение — Координатная точка8Трейты как ограничения
Синтаксис ограничений трейтовМножественные ограниченияКонструкция whereВозврат типов с трейтамиИтоги — Обобщённый принтер11Паттерны проектирования в Rust
Паттерн NewtypeКомпозицияТрейт DropFrom и IntoИтоги — Мок-объект Smart Pointer3Продвинутые перечисления
Перечисления с даннымиМетоды в перечисленияхСопоставление вариантов с даннымиСнова об Option EnumИтоги — перечисление Shape6Определение трейтов
Что такое трейт?Реализация трейтовРеализации по умолчаниюПереопределение реализаций по умолчаниюТрейты с параметрамиИтоги — Media Player