Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التفاعل النهائي

جزء من قسم البرمجة كائنية التوجه في رحلة Rust على Coddy. الدرس 23 من 61.

challenge icon

التحدي

سهل

تهانينا على بناء حيوانك الأليف الافتراضي! في هذه الخطوة الأخيرة، ستجمع كل شيء معًا من خلال محاكاة جلسة تفاعل كاملة مع حيوانك الأليف، بحيث تعمل كل دالة كتبتها جنبًا إلى جنب.

وحدة pet.rs مُعطاة لك مكتملة: new، ودوال الوصول، وset_energy، وset_hunger، وfeed، وplay، وstatus. ستكتب main.rs فقط.

ستتلقى ثلاث قيم إدخال، وهي القيم الثلاث نفسها الموجودة في الخطوات السابقة:

  1. اسم الحيوان الأليف
  2. الطاقة التي يبدأ بها الحيوان الأليف
  3. الجوع الذي يبدأ به الحيوان الأليف

في main.rs، نفّذ التسلسل التالي:

  1. أنشئ الحيوان الأليف باستخدام الاسم المُعطى، ثم اضبط طاقته وجوعه من قيم الإدخال
  2. اعرض تقرير الحالة
  3. العب مع حيوانك الأليف مرتين
  4. أطعم حيوانك الأليف مرة واحدة
  5. اطبع سطر الفاصل --- After Activities ---
  6. اعرض تقرير الحالة مرة أخرى

تذكّر كيفية تغيّر الإحصاءات: اللعب يستهلك 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
}

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم Rust عبر الإنترنت