التفاعل النهائي
جزء من قسم البرمجة كائنية التوجه في رحلة Rust على Coddy. الدرس 23 من 61.
التحدي
سهلتهانينا على بناء حيوانك الأليف الافتراضي! في هذه الخطوة الأخيرة، ستجمع كل شيء معًا من خلال محاكاة جلسة تفاعل كاملة مع حيوانك الأليف، بحيث تعمل كل دالة كتبتها جنبًا إلى جنب.
وحدة pet.rs مُعطاة لك مكتملة: new، ودوال الوصول، وset_energy، وset_hunger، وfeed، وplay، وstatus. ستكتب main.rs فقط.
ستتلقى ثلاث قيم إدخال، وهي القيم الثلاث نفسها الموجودة في الخطوات السابقة:
- اسم الحيوان الأليف
- الطاقة التي يبدأ بها الحيوان الأليف
- الجوع الذي يبدأ به الحيوان الأليف
في main.rs، نفّذ التسلسل التالي:
- أنشئ الحيوان الأليف باستخدام الاسم المُعطى، ثم اضبط طاقته وجوعه من قيم الإدخال
- اعرض تقرير الحالة
- العب مع حيوانك الأليف مرتين
- أطعم حيوانك الأليف مرة واحدة
- اطبع سطر الفاصل
--- After Activities --- - اعرض تقرير الحالة مرة أخرى
تذكّر كيفية تغيّر الإحصاءات: اللعب يستهلك 20 من الطاقة ويضيف 15 إلى الجوع، وإطعام الحيوان يطرح 30 من الجوع، ولا تنخفض الطاقة أبدًا عن 0 ولا يرتفع الجوع أبدًا فوق 100. يكون المزاج happy عندما تكون الطاقة 50 أو أكثر ويكون الجوع 50 أو أقل، ويكون tired خلاف ذلك، لذلك يمكن للحيوان الأليف أن يبدأ سعيدًا وينهي الجلسة متعبًا.
على سبيل المثال، عند استخدام قيم الإدخال Luna و50 و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: tiredيوضح هذا التحدي الأخير نظام Virtual Pet الكامل الذي بنيته: وحدة تحتوي على حقول خاصة، ودوال وصول، ودوال ضبط، ودوال تعمل معًا ضمن جلسة تفاعلية واحدة.
جرّب بنفسك
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: أنشئ الحيوان الأليف واضبط طاقته وجوعه من المدخلات
// TODO: print the first status report
// TODO: العب مرتين، ثم أطعم مرة واحدة
// TODO: print the separator "--- After Activities ---"
// TODO: print the final status report
}
جميع دروس البرمجة كائنية التوجه
1الأساليب والسلوك
مقدمة في كتل التنفيذمعامل Selfالأساليب القابلة للتعديلالدوال المرتبطةكتل تنفيذ متعددةتسلسل الأساليبمراجعة - إجراءات المستطيل4مشروع: حيوان أليف افتراضي
تعريف الحيوان الأليفإطعام الحيوان الأليف2التغليف والوحدات البرمجية
أساسيات الوحدات البرمجيةالكلمة المفتاحية Publicالحقول الخاصةدوال Gettersدوال Settersمراجعة - الخزانة الآمنة5الأنواع العامة (Generics)
الـ Structs العامةالـ Methods العامةأنواع عامة متعددةالـ Functions العامةمراجعة - Coordinate Point3التعدادات المتقدمة (Advanced Enums)
التعدادات مع البياناتالأساليب (Methods) في التعداداتمطابقة حالات البياناتمراجعة التعداد Optionملخص - التعداد Shape6تعريف الـ Traits
ما هي الـ Trait؟تنفيذ الـ Traitsالتنفيذات الافتراضيةتجاوز التنفيذات الافتراضيةالـ Traits مع المعاملاتملخص - مشغل الوسائطتدرّب بنفسك: مترجم Rust عبر الإنترنت