Menu
Coddy logo textTech

Interação Final

Parte da seção Programação Orientada a Objetos do Journey de Rust da Coddy. Lição 23 de 61.

challenge icon

Desafio

Fácil

Parabé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:

  1. O nome do pet
  2. A energia com que o pet começa
  3. A fome com que o pet começa

Em main.rs, execute esta sequência:

  1. Crie o pet com o nome fornecido e defina sua energia e fome a partir das entradas
  2. Exiba o relatório de status
  3. Brinque com seu pet duas vezes
  4. Alimente seu pet uma vez
  5. Imprima a linha separadora --- After Activities ---
  6. 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: tired

Este ú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

Pratique por conta própria: Compilador de Rust online