Interaction finale
Fait partie de la section Programmation Orientée Objet du Journey Rust de Coddy. Leçon 23 sur 61.
Défi
FacileFélicitations pour avoir créé votre animal de compagnie virtuel ! Lors de cette dernière étape, vous réunissez tous les éléments en simulant une session d’interaction complète avec votre animal, afin que chaque méthode que vous avez écrite fonctionne conjointement avec les autres.
Votre module pet.rs vous est fourni dans son intégralité : new, les accesseurs, set_energy, set_hunger, feed, play et status. Vous devez uniquement écrire main.rs.
Vous recevrez trois entrées, les mêmes que lors des étapes précédentes :
- Le nom de l’animal
- L’énergie avec laquelle l’animal commence
- La faim avec laquelle l’animal commence
Dans main.rs, effectuez cette séquence :
- Créez l’animal avec le nom fourni, puis définissez son énergie et sa faim à partir des entrées
- Affichez le rapport d’état
- Jouez avec votre animal deux fois
- Nourrissez votre animal une fois
- Affichez la ligne de séparation
--- After Activities --- - Affichez à nouveau le rapport d’état
Souvenez-vous de la façon dont les statistiques évoluent : jouer coûte 20 points d’énergie et ajoute 15 points de faim, nourrir l’animal retire 30 points de faim, l’énergie ne descend jamais en dessous de 0 et la faim ne dépasse jamais 100. L’humeur est happy lorsque l’énergie est supérieure ou égale à 50 et que la faim est inférieure ou égale à 50, et tired dans le cas contraire : un animal peut donc commencer heureux et terminer la session fatigué.
Par exemple, avec les entrées Luna, 50 et 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: tiredCe dernier défi présente le système complet d’animal de compagnie virtuel que vous avez créé : un module avec des champs privés, des accesseurs, des mutateurs et des méthodes qui fonctionnent ensemble au cours d’une même session 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");
// TODO: crée le pet et définis son energy et son hunger à partir de l'entrée
// TODO: print the first status report
// TODO: play deux fois, puis feed une fois
// TODO: print the separator "--- After Activities ---"
// TODO: print the final status report
}
Toutes les leçons de Programmation Orientée Objet
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édiaEntraînez-vous par vous-même : Compilateur Rust en ligne