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 Player