Jouer avec l'animal
Fait partie de la section Object Oriented Programming du Journey Rust de Coddy — leçon 21 sur 61.
Défi
FacileVotre animal est nourri et heureux — maintenant, donnons-lui un peu d'exercice ! Dans cette étape, vous allez ajouter une méthode play qui vous permet d'interagir avec votre compagnon virtuel.
Jouer avec votre animal devrait coûter de l'énergie mais aussi le rendre plus affamé. Lorsque votre animal joue, son energy diminue de 20 et sa hunger augmente de 15. Cependant, l'énergie ne doit jamais descendre en dessous de 0, et la faim ne doit jamais dépasser 100.
Vous aurez également besoin d'une méthode getter energy pour vérifier à quel point votre animal est fatigué après le jeu.
Dans votre fichier main.rs, lisez le nom de l'animal ainsi que les valeurs initiales d'énergie et de faim. Après avoir configuré votre animal, appelez play une fois et affichez les niveaux d'énergie et de faim.
La méthode play doit afficher un message indiquant que votre animal s'est amusé :
{name} had fun playing!Ensuite, votre fichier principal doit afficher les statistiques :
Energy: {energy_level}
Hunger: {hunger_level}Par exemple, si l'entrée est :
Buddy
50
30La sortie devrait être :
Buddy had fun playing!
Energy: 30
Hunger: 45Si l'énergie commence à 10, jouer la ramènerait à 0 (pas de valeur négative). Si la faim commence à 90, jouer la plafonnerait à 100.
Vous devrez ajouter une méthode set_energy aux côtés de votre méthode set_hunger existante pour initialiser les deux valeurs pour les tests.
Essayez vous-même
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());
}Toutes les leçons de Object Oriented Programming
1Méthodes et comportement
Introduction aux blocs d'implémentationLe paramètre SelfMéthodes mutablesFonctions associéesBlocs d'implémentation multiplesChaînage de méthodesRécapitulatif - Actions sur le rectangle4Projet : Animal virtuel
Définir l'animalNourrir l'animal7Traits standards
Le trait DebugLe trait DisplayClone et CopyLes traits d'égalitéRécapitulatif - Point affichable10Projet : Système de documents
Le trait DrawComposant texte2Encapsulation et modules
Bases des modulesLe mot-clé publicChamps privésGettersSettersRécapitulatif - Casier sécurisé5Généricité
Structures génériquesMéthodes génériquesPlusieurs types génériquesFonctions génériquesRécapitulatif - Point de coordonnées8Les Traits comme contraintes
Syntaxe des contraintes de traitContraintes multiplesLa clause whereRetourner des types avec des traitsRécapitulatif - Afficheur générique11Design Patterns en Rust
Le pattern NewtypeCompositionLe trait DropFrom et IntoRécapitulatif - Mock de Smart Pointer3Enums avancées
Enums avec donnéesMéthodes sur les EnumsMatching des variantes de donnéesL'Enum Option revisitéeRécapitulatif - Enum Shape6Définition des Traits
Qu'est-ce qu'un Trait ?Implémenter des TraitsImplémentations par défautRedéfinir les comportements par défautTraits avec paramètresRécapitulatif - Lecteur multimédia