Interacción final
Parte de la sección Object Oriented Programming del Journey de Rust de Coddy — lección 23 de 61.
Desafío
Fácil¡Felicitaciones por construir tu Mascota Virtual! En este paso final, unirás todo simulando una sesión de interacción completa con tu mascota. ¡Aquí es donde todos tus métodos trabajan en armonía!
Tu módulo de mascota ya tiene todo lo que necesita: alimentación, juego e informes de estado. Ahora crearás una simulación que muestre un día en la vida de tu compañero virtual.
En tu main.rs, leerás el nombre de tu mascota y luego realizarás una secuencia de interacciones:
- Crea una nueva mascota con el nombre dado
- Muestra el informe de estado inicial
- Juega con tu mascota dos veces
- Alimenta a tu mascota una vez
- Muestra el informe de estado final
Entre los dos informes de estado, imprime una línea separadora para mostrar la transición:
--- After Activities ---Por ejemplo, si la entrada es:
BuddyLa salida debería 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: happyRecuerda cómo cambian las estadísticas: jugar cuesta 20 de energía y añade 15 de hambre cada vez, mientras que alimentar reduce el hambre en 30. Después de dos sesiones de juego y una alimentación, la energía de tu mascota baja de 100 a 60, y el hambre pasa de 0 a 30 y luego vuelve a 0.
Este desafío final muestra el sistema completo de Mascota Virtual que has construido: ¡un módulo totalmente encapsulado con campos privados, getters, setters y métodos que trabajan juntos para crear una experiencia interactiva!
Pruébalo tú mismo
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 las lecciones de Object Oriented Programming
1Métodos y Comportamiento
Intro a Bloques de ImplementaciónEl Parámetro SelfMétodos MutablesFunciones AsociadasMúltiples Bloques de ImplementaciónEncadenamiento de MétodosResumen - Acciones de Rectángulo4Proyecto: Mascota virtual
Definir la mascotaAlimentar a la mascota7Traits estándar
El trait DebugEl trait DisplayClone y CopyTraits de igualdadResumen - Punto imprimible10Proyecto: Sistema de documentos
El Trait DrawComponente de texto2Encapsulamiento y módulos
Conceptos básicos de módulosLa palabra clave PublicCampos privadosGettersSettersRepaso - Casillero seguro5Genéricos
Estructuras genéricasMétodos genéricosMúltiples tipos genéricosFunciones genéricasResumen - Punto de coordenadas8Traits como límites
Sintaxis de límites de traitsLímites múltiplesLa cláusula whereRetornar tipos con traitsResumen: Impresora genérica11Patrones de diseño en Rust
Patrón NewtypeComposiciónEl Trait DropFrom e IntoResumen - Mock de Smart Pointer3Enums avanzados
Enums con datosMétodos en EnumsCoincidencia de variantes de datosEl Enum Option revisitadoResumen - Enum Shape6Definición de Traits
¿Qué es un Trait?Implementación de TraitsImplementaciones por defectoSobrescribir valores por defectoTraits con parámetrosResumen - Reproductor multimedia