Brincando com o Pet
Parte da seção Object Oriented Programming do Journey de Rust da Coddy — lição 21 de 61.
Desafio
FácilSeu animal de estimação está alimentado e feliz — agora vamos dar a ele um pouco de exercício! Nesta etapa, você adicionará um método play que permite interagir com seu companheiro virtual.
Brincar com seu animal de estimação deve custar energia, mas também deixá-lo com mais fome. Quando seu animal brinca, sua energy diminui em 20 e sua hunger aumenta em 15. No entanto, a energia nunca deve cair abaixo de 0, e a fome nunca deve exceder 100.
Você também precisará de um método getter energy para verificar o quão cansado seu animal de estimação está após a brincadeira.
Em seu main.rs, leia o nome do animal de estimação junto com os valores iniciais de energia e fome. Depois de configurar seu animal de estimação, chame play uma vez e exiba os níveis de energia e fome.
O método play deve imprimir uma mensagem mostrando que seu animal de estimação se divertiu:
{name} had fun playing!Então, seu arquivo principal deve exibir as estatísticas:
Energy: {energy_level}
Hunger: {hunger_level}Por exemplo, se a entrada for:
Buddy
50
30A saída deve ser:
Buddy had fun playing!
Energy: 30
Hunger: 45Se a energia começar em 10, brincar a levaria para 0 (não negativa). Se a fome começar em 90, brincar a limitaria em 100.
Você precisará adicionar um método set_energy junto com seu set_hunger existente para inicializar ambos os valores para teste.
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.play();
println!("Energy: {}", my_pet.energy());
println!("Hunger: {}", my_pet.hunger());
}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