Interação Final
Parte da seção Programação Orientada a Objetos do Journey de Rust da Coddy. Lição 23 de 61.
Desafio
FácilParabéns por construir seu Virtual Pet! Nesta etapa final, você reunirá tudo simulando uma sessão completa de interação com seu pet, para que cada método que você escreveu funcione em conjunto.
O módulo pet.rs é fornecido completo: new, os getters, set_energy, set_hunger, feed, play e status. Você escreverá apenas main.rs.
Você receberá três entradas, as mesmas três das etapas anteriores:
- O nome do pet
- A energia com que o pet começa
- A fome com que o pet começa
Em main.rs, execute esta sequência:
- Crie o pet com o nome fornecido e defina sua energia e fome a partir das entradas
- Exiba o relatório de status
- Brinque com seu pet duas vezes
- Alimente seu pet uma vez
- Imprima a linha separadora
--- After Activities --- - Exiba o relatório de status novamente
Lembre-se de como os atributos mudam: brincar custa 20 de energia e adiciona 15 de fome, alimentar remove 30 da fome, a energia nunca fica abaixo de 0 e a fome nunca ultrapassa 100. O humor é happy quando a energia é 50 ou mais e a fome é 50 ou menos, e tired caso contrário; portanto, um pet pode começar feliz e terminar a sessão cansado.
Por exemplo, com as entradas Luna, 50 e 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: tiredEste último desafio mostra o sistema completo de Virtual Pet que você construiu: um módulo com campos privados, getters, setters e métodos que funcionam juntos em uma única sessão 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");
// TODO: crie o pet e defina sua energia e fome a partir da entrada
// TODO: print the first status report
// TODO: brinque duas vezes, depois alimente uma vez
// TODO: print the separator "--- After Activities ---"
// TODO: print the final status report
}
Todas as lições de Programação Orientada a Objetos
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