Interação Final
Parte da seção Object Oriented Programming do Journey de Rust da Coddy. Lição 23 de 61.
Desafio
FácilParabéns por construir seu Animal de Estimação Virtual! Nesta etapa final, você reunirá tudo simulando uma sessão completa de interação com seu pet. É aqui que todos os seus métodos trabalham em harmonia!
Seu módulo de pet já tem tudo o que precisa: alimentação, brincadeira e relatório de status. Agora você criará uma simulação que mostra um dia na vida do seu companheiro virtual.
No seu main.rs, você lerá o nome do seu pet e, em seguida, realizará uma sequência de interações:
- Criar um novo pet com o nome fornecido
- Exibir o relatório de status inicial
- Brincar com seu pet duas vezes
- Alimentar seu pet uma vez
- Exibir o relatório de status final
Entre os dois relatórios de status, imprima uma linha separadora para mostrar a transição:
--- After Activities ---Por exemplo, se a entrada for:
BuddyA saída deve ser:
--- Status Report ---
Name: Buddy
Energy: 100
Hunger: 0
Mood: happy
Buddy had fun playing!
Buddy had fun playing!
Buddy enjoyed the meal!
--- After Activities ---
--- Status Report ---
Name: Buddy
Energy: 60
Hunger: 0
Mood: happyLembre-se de como as estatísticas mudam: brincar custa 20 de energia e adiciona 15 de fome a cada vez, enquanto alimentar reduz a fome em 30. Após duas sessões de brincadeira e uma alimentação, a energia do seu pet cai de 100 para 60, e a fome vai de 0 para 30 e depois volta para 0.
Este desafio final demonstra o sistema completo de Animal de Estimação Virtual que você construiu — um módulo totalmente encapsulado com campos privados, getters, setters e métodos que trabalham juntos para criar uma experiência interativa!
Experimente você mesmo
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.status();
}
Todas as lições de Object Oriented Programming
1Métodos e Comportamento
Introdução a Blocos de ImplementaçãoO Parâmetro SelfMétodos MutáveisFunções AssociadasMúltiplos Blocos de ImplementaçãoEncadeamento de MétodosRecapitulação - Ações de Retângulo4Projeto: Pet Virtual
Definindo o PetAlimentando o Pet7Traits Padrão
A Trait DebugA Trait DisplayClone e CopyTraits de IgualdadeRecapitulação - Ponto Imprimível10Projeto: Sistema de Documentos
A Trait DrawComponente de Texto2Encapsulamento e Módulos
Fundamentos de MódulosA Palavra-chave PublicCampos PrivadosGettersSettersRecapitulação - Cofre Seguro5Genéricos
Structs GenéricasMétodos GenéricosMúltiplos Tipos GenéricosFunções GenéricasRecapitulação - Ponto de Coordenada8Traits como Restrições
Sintaxe de Restrições de TraitRestrições MúltiplasA Cláusula WhereRetornando Tipos com TraitsRecapitulação - Impressora Genérica11Padrões de Projeto em Rust
Padrão NewtypeComposiçãoA Trait DropFrom e IntoRecapitulação - Mock de Smart Pointer3Enums Avançados
Enums com DadosMétodos em EnumsCorrespondência de Variantes de DadosO Enum Option RevisitadoRecapitulação - Enum Shape6Definição de Traits
O que é uma Trait?Implementando TraitsImplementações PadrãoSobrescrevendo PadrõesTraits com ParâmetrosRecapitulação - Media PlayerPratique por conta própria: Compilador de Rust online