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

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

جزء من قسم Object Oriented Programming في رحلة Rust على Coddy — الدرس 23 من 61.

challenge icon

التحدي

سهل

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

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

في ملف main.rs، ستقرأ اسم حيوانك الأليف ثم تنفذ سلسلة من التفاعلات:

  1. إنشاء حيوان أليف جديد بالاسم المعطى
  2. عرض تقرير الحالة الأولي
  3. اللعب مع حيوانك الأليف مرتين
  4. إطعام حيوانك الأليف مرة واحدة
  5. عرض تقرير الحالة النهائي

بين تقريري الحالة، قم بطباعة سطر فاصل لإظهار الانتقال:

--- 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