Interaction finale
Fait partie de la section Object Oriented Programming du Journey Rust de Coddy — leçon 23 sur 61.
Défi
FacileFélicitations pour la création de votre animal de compagnie virtuel ! Dans cette dernière étape, vous allez tout mettre en œuvre en simulant une session d'interaction complète avec votre animal. C'est ici que toutes vos méthodes fonctionnent en harmonie !
Votre module d'animal de compagnie possède déjà tout ce dont il a besoin : l'alimentation, le jeu et le rapport d'état. Vous allez maintenant créer une simulation qui montre une journée dans la vie de votre compagnon virtuel.
Dans votre main.rs, vous allez lire le nom de votre animal, puis effectuer une séquence d'interactions :
- Créer un nouvel animal avec le nom donné
- Afficher le rapport d'état initial
- Jouer avec votre animal deux fois
- Nourrir votre animal une fois
- Afficher le rapport d'état final
Entre les deux rapports d'état, affichez une ligne de séparation pour montrer la transition :
--- After Activities ---Par exemple, si l'entrée est :
BuddyLa sortie devrait être :
--- 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: happyRappelez-vous comment les statistiques changent : jouer coûte 20 d'énergie et ajoute 15 de faim à chaque fois, tandis que nourrir réduit la faim de 30. Après deux sessions de jeu et un repas, l'énergie de votre animal passe de 100 à 60, et la faim passe de 0 à 30 puis revient à 0.
Ce défi final met en valeur le système complet d'animal de compagnie virtuel que vous avez construit — un module entièrement encapsulé avec des champs privés, des getters, des setters et des méthodes qui fonctionnent ensemble pour créer une expérience interactive !
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.status();
}
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