التفاعل النهائي
جزء من قسم Object Oriented Programming في رحلة Rust على Coddy — الدرس 23 من 61.
التحدي
سهلتهانينا على بناء حيوانك الأليف الافتراضي! في هذه الخطوة الأخيرة، ستجمع كل شيء معاً من خلال محاكاة جلسة تفاعل كاملة مع حيوانك الأليف. هذا هو المكان الذي تعمل فيه جميع دوالك بانسجام!
وحدة الحيوان الأليف الخاصة بك تحتوي بالفعل على كل ما تحتاجه: الإطعام، اللعب، وتقرير الحالة. الآن ستقوم بإنشاء محاكاة تعرض يوماً في حياة رفيقك الافتراضي.
في ملف main.rs، ستقرأ اسم حيوانك الأليف ثم تنفذ سلسلة من التفاعلات:
- إنشاء حيوان أليف جديد بالاسم المعطى
- عرض تقرير الحالة الأولي
- اللعب مع حيوانك الأليف مرتين
- إطعام حيوانك الأليف مرة واحدة
- عرض تقرير الحالة النهائي
بين تقريري الحالة، قم بطباعة سطر فاصل لإظهار الانتقال:
--- After Activities ---على سبيل المثال، إذا كان المدخل هو:
Buddyيجب أن يكون المخرج:
--- 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: happyتذكر كيف تتغير الإحصائيات: اللعب يستهلك 20 من الطاقة ويزيد 15 من الجوع في كل مرة، بينما يقلل الإطعام الجوع بمقدار 30. بعد جلستي لعب وإطعام واحد، ستنخفض طاقة حيوانك الأليف من 100 إلى 60، وسينتقل الجوع من 0 إلى 30 ثم يعود إلى 0.
يستعرض هذا التحدي النهائي نظام الحيوان الأليف الافتراضي الكامل الذي قمت ببنائه — وحدة مغلفة بالكامل تحتوي على حقول خاصة، ودوال جلب (getters)، ودوال تعيين (setters)، ودوال تعمل معاً لإنشاء تجربة تفاعلية!
جرّب بنفسك
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();
}
جميع دروس Object Oriented Programming
1الأساليب والسلوك
مقدمة في كتل التنفيذمعامل Selfالأساليب القابلة للتعديلالدوال المرتبطةكتل تنفيذ متعددةتسلسل الأساليبمراجعة - إجراءات المستطيل4مشروع: حيوان أليف افتراضي
تعريف الحيوان الأليفإطعام الحيوان الأليف2التغليف والوحدات البرمجية
أساسيات الوحدات البرمجيةالكلمة المفتاحية Publicالحقول الخاصةدوال Gettersدوال Settersمراجعة - الخزانة الآمنة5الأنواع العامة (Generics)
الـ Structs العامةالـ Methods العامةأنواع عامة متعددةالـ Functions العامةمراجعة - Coordinate Point3التعدادات المتقدمة (Advanced Enums)
التعدادات مع البياناتالأساليب (Methods) في التعداداتمطابقة حالات البياناتمراجعة التعداد Optionملخص - التعداد Shape6تعريف الـ Traits
ما هي الـ Trait؟تنفيذ الـ Traitsالتنفيذات الافتراضيةتجاوز التنفيذات الافتراضيةالـ Traits مع المعاملاتملخص - مشغل الوسائط