Jugar con la mascota
Parte de la sección Programación Orientada a Objetos del Journey de Rust de Coddy. Lección 21 de 61.
Desafío
FácilTu mascota está alimentada y feliz: ¡ahora vamos a darle algo de ejercicio! En este paso, añadirás un método play que te permitirá interactuar con tu compañero virtual.
Jugar con tu mascota debería costarle energía, pero también hacer que tenga más hambre. Cuando tu mascota juega, su energy disminuye en 20 y su hunger aumenta en 15. Sin embargo, la energía nunca debería bajar de 0, y el hambre nunca debería superar 100.
También necesitarás un método getter energy para comprobar lo cansada que está tu mascota después de jugar.
En tu main.rs, lee el nombre de la mascota junto con los valores iniciales de energía y hambre. Después de configurar tu mascota, llama a play una vez y muestra los niveles de energía y hambre.
El método play debería imprimir un mensaje que muestre que tu mascota se divirtió:
{name} had fun playing!Después, tu archivo principal debería mostrar las estadísticas:
Energy: {energy_level}
Hunger: {hunger_level}Por ejemplo, si la entrada es:
Buddy
50
30La salida debería ser:
Buddy had fun playing!
Energy: 30
Hunger: 45Si la energía comienza en 10, jugar la dejaría en 0 (no en un valor negativo). Si el hambre comienza en 90, jugar la limitaría a 100.
Deberás añadir un método set_energy junto al método set_hunger existente para inicializar ambos valores para las pruebas.
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.play();
println!("Energy: {}", my_pet.energy());
println!("Hunger: {}", my_pet.hunger());
}Todas las lecciones de Programación Orientada a Objetos
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 multimediaPractica por tu cuenta: Compilador de Rust online