Skip to content

🎮 مشروع: لعبة تخمين الرقم

متوسط⏱️ 45 دقيقة📁 ملف واحد

ما الذي سنبنيه؟

لعبة كلاسيكية: الحاسوب يختار رقماً عشوائياً واللاعب يحاول تخمينه:

🎮 لعبة تخمين الرقم
═══════════════════════

اخترت رقماً بين 1 و 100...
أدخل تخمينك: 50
⬆️ أكبر من 50!

أدخل تخمينك: 75
⬇️ أصغر من 75!

أدخل تخمينك: 62
🎉 صحيح! الرقم هو 62
أصبت في 3 محاولات!

ما ستتعلمه

  • ✅ توليد أرقام عشوائية
  • ✅ حلقات اللعب (game loop)
  • ✅ التحقق من صحة الإدخال
  • ✅ نظام النقاط والمستويات
  • ✅ تقديم تلميحات ذكية

الخطوة 1: توليد رقم عشوائي

نبدأ بالأساسيات — توليد رقم عشوائي:

sad
# ═══════════════════════════════════════
# لعبة تخمين الرقم — الهيكل الأساسي
# ═══════════════════════════════════════

من رياضيات استورد عشوائي

# توليد رقم عشوائي بين 1 و 100
متغير الرقم_السري = عشوائي(1، 100)

اطبع_سطر("🎮 لعبة تخمين الرقم")
اطبع_سطر("اخترت رقماً بين 1 و 100...")
اطبع_سطر("الرقم السري (للاختبار): " + الرقم_السري)

جرّب: شغّل الكود عدة مرات — سترى أرقاماً مختلفة كل مرة!


الخطوة 2: حلقة اللعب الأساسية

الآن نُضيف حلقة التخمين:

sad
من رياضيات استورد عشوائي

متغير الرقم_السري = عشوائي(1، 100)
متغير المحاولات = 0
متغير وجده = خطأ

اطبع_سطر("🎮 لعبة تخمين الرقم")
اطبع_سطر("اخترت رقماً بين 1 و 100...")
اطبع_سطر("")

بينما (ليس وجده)
    اطبع("أدخل تخمينك: ")
    متغير تخمين = رقم(اقرأ())
    المحاولات = المحاولات + 1
    
    إذا (تخمين < الرقم_السري)
        اطبع_سطر("⬆️ أكبر من " + تخمين + "!")
    وإلا إذا (تخمين > الرقم_السري)
        اطبع_سطر("⬇️ أصغر من " + تخمين + "!")
    وإلا
        وجده = صحيح
        اطبع_سطر("🎉 صحيح! الرقم هو " + الرقم_السري)
        اطبع_سطر("أصبت في " + المحاولات + " محاولات!")
    نهاية
نهاية

الخطوة 3: التحقق من صحة الإدخال

نتأكد أن المستخدم يُدخل رقماً صحيحاً:

sad
# === دالة قراءة رقم صحيح ===
دالة اقرأ_رقم(رسالة، حد_أدنى، حد_أقصى)
    بينما (صحيح)
        اطبع(رسالة)
        متغير إدخال = اقرأ()
        
        # محاولة تحويل النص إلى رقم
        حاول
            متغير ن = رقم(إدخال)
            
            إذا (ن < حد_أدنى أو ن > حد_أقصى)
                اطبع_سطر(م"❌ أدخل رقماً بين {حد_أدنى} و {حد_أقصى}!")
                استمر
            نهاية
            
            ارجع ن
        امسك خ
            اطبع_سطر("❌ هذا ليس رقماً صحيحاً!")
        نهاية
    نهاية
نهاية

# استخدام الدالة
متغير تخمين = اقرأ_رقم("أدخل تخمينك: "، 1، 100)

الخطوة 4: نظام المستويات

نُضيف مستويات صعوبة مختلفة:

sad
# === تعداد المستويات ===
تعداد مستوى
    سهل
    متوسط
    صعب
نهاية

# === إعدادات كل مستوى ===
دالة إعدادات_المستوى(م)
    طابق (م)
        عندما مستوى.سهل:
            ارجع {"نطاق": 50، "محاولات": 15، "تلميحات": صحيح}
        عندما مستوى.متوسط:
            ارجع {"نطاق": 100، "محاولات": 10، "تلميحات": صحيح}
        عندما مستوى.صعب:
            ارجع {"نطاق": 200، "محاولات": 7، "تلميحات": خطأ}
    نهاية
نهاية

# === اختيار المستوى ===
دالة اختر_المستوى()
    اطبع_سطر("")
    اطبع_سطر("اختر مستوى الصعوبة:")
    اطبع_سطر("1. 🟢 سهل (1-50، 15 محاولة، تلميحات)")
    اطبع_سطر("2. 🟡 متوسط (1-100، 10 محاولات، تلميحات)")
    اطبع_سطر("3. 🔴 صعب (1-200، 7 محاولات، بدون تلميحات)")
    
    متغير اختيار = اقرأ_رقم("اختيارك: "، 1، 3)
    
    طابق (اختيار)
        عندما 1: ارجع مستوى.سهل
        عندما 2: ارجع مستوى.متوسط
        عندما 3: ارجع مستوى.صعب
    نهاية
نهاية

الخطوة 5: تلميحات ذكية

نُضيف تلميحات تساعد اللاعب:

sad
# === تلميح بناءً على المسافة ===
دالة أعطِ_تلميح(تخمين، السري)
    متغير فرق = السري - تخمين
    إذا (فرق < 0)
        فرق = -فرق  # القيمة المطلقة
    نهاية
    
    إذا (فرق <= 5)
        اطبع_سطر("🔥 حار جداً! قريب جداً!")
    وإلا إذا (فرق <= 15)
        اطبع_سطر("🌡️ دافئ... اقتربت!")
    وإلا إذا (فرق <= 30)
        اطبع_سطر("❄️ بارد...")
    وإلا
        اطبع_سطر("🥶 بارد جداً!")
    نهاية
نهاية

الخطوة 6: نظام النقاط

نحسب النقاط بناءً على الأداء:

sad
# === حساب النقاط ===
دالة احسب_النقاط(المحاولات، الحد_الأقصى، المستوى)
    # النقاط الأساسية حسب المستوى
    متغير أساس = 0
    طابق (المستوى)
        عندما مستوى.سهل: أساس = 100
        عندما مستوى.متوسط: أساس = 200
        عندما مستوى.صعب: أساس = 500
    نهاية
    
    # مضاعف بناءً على سرعة الإجابة
    متغير مضاعف = (الحد_الأقصى - المحاولات + 1) / الحد_الأقصى
    
    ارجع رقم(أساس * مضاعف)
نهاية

# === عرض النتيجة ===
دالة اعرض_النتيجة(النقاط، المحاولات)
    اطبع_سطر("")
    اطبع_سطر("╔══════════════════════════╗")
    اطبع_سطر("║     🏆 النتيجة النهائية   ║")
    اطبع_سطر("╠══════════════════════════╣")
    اطبع_سطر(م"║  المحاولات: {المحاولات}              ║")
    اطبع_سطر(م"║  النقاط: {النقاط}                ║")
    
    إذا (النقاط >= 400)
        اطبع_سطر("║  التقييم: ⭐⭐⭐ ممتاز!    ║")
    وإلا إذا (النقاط >= 200)
        اطبع_سطر("║  التقييم: ⭐⭐ جيد جداً    ║")
    وإلا
        اطبع_سطر("║  التقييم: ⭐ حاول مجدداً   ║")
    نهاية
    
    اطبع_سطر("╚══════════════════════════╝")
نهاية

الكود الكامل

📄 انقر لعرض الكود الكامل
sad
# ═══════════════════════════════════════════════════════════════
# مشروع: لعبة تخمين الرقم
# الوصف: لعبة كلاسيكية مع مستويات صعوبة ونظام نقاط
# ═══════════════════════════════════════════════════════════════

من رياضيات استورد عشوائي

# === تعداد المستويات ===
تعداد مستوى
    سهل
    متوسط
    صعب
نهاية

# ═══════════════════════════════════════
# دوال مساعدة
# ═══════════════════════════════════════

دالة اقرأ_رقم(رسالة، حد_أدنى، حد_أقصى)
    بينما (صحيح)
        اطبع(رسالة)
        متغير إدخال = اقرأ()
        
        حاول
            متغير ن = رقم(إدخال)
            
            إذا (ن < حد_أدنى أو ن > حد_أقصى)
                اطبع_سطر(م"❌ أدخل رقماً بين {حد_أدنى} و {حد_أقصى}!")
                استمر
            نهاية
            
            ارجع ن
        امسك خ
            اطبع_سطر("❌ هذا ليس رقماً صحيحاً!")
        نهاية
    نهاية
نهاية

دالة إعدادات_المستوى(م)
    طابق (م)
        عندما مستوى.سهل:
            ارجع {"نطاق": 50، "محاولات": 15، "تلميحات": صحيح}
        عندما مستوى.متوسط:
            ارجع {"نطاق": 100، "محاولات": 10، "تلميحات": صحيح}
        عندما مستوى.صعب:
            ارجع {"نطاق": 200، "محاولات": 7، "تلميحات": خطأ}
    نهاية
نهاية

دالة اختر_المستوى()
    اطبع_سطر("")
    اطبع_سطر("اختر مستوى الصعوبة:")
    اطبع_سطر("1. 🟢 سهل (1-50، 15 محاولة)")
    اطبع_سطر("2. 🟡 متوسط (1-100، 10 محاولات)")
    اطبع_سطر("3. 🔴 صعب (1-200، 7 محاولات)")
    
    متغير اختيار = اقرأ_رقم("اختيارك: "، 1، 3)
    
    طابق (اختيار)
        عندما 1: ارجع مستوى.سهل
        عندما 2: ارجع مستوى.متوسط
        عندما 3: ارجع مستوى.صعب
    نهاية
نهاية

دالة أعطِ_تلميح(تخمين، السري)
    متغير فرق = السري - تخمين
    إذا (فرق < 0)
        فرق = -فرق
    نهاية
    
    إذا (فرق <= 5)
        اطبع_سطر("🔥 حار جداً!")
    وإلا إذا (فرق <= 15)
        اطبع_سطر("🌡️ دافئ...")
    وإلا إذا (فرق <= 30)
        اطبع_سطر("❄️ بارد...")
    وإلا
        اطبع_سطر("🥶 بارد جداً!")
    نهاية
نهاية

دالة احسب_النقاط(المحاولات، الحد_الأقصى، م)
    متغير أساس = 0
    طابق (م)
        عندما مستوى.سهل: أساس = 100
        عندما مستوى.متوسط: أساس = 200
        عندما مستوى.صعب: أساس = 500
    نهاية
    
    متغير مضاعف = (الحد_الأقصى - المحاولات + 1) / الحد_الأقصى
    ارجع رقم(أساس * مضاعف)
نهاية

دالة اعرض_النتيجة(النقاط، المحاولات)
    اطبع_سطر("")
    اطبع_سطر("╔══════════════════════════╗")
    اطبع_سطر("║     🏆 النتيجة النهائية   ║")
    اطبع_سطر("╠══════════════════════════╣")
    اطبع_سطر(م"║  المحاولات: {المحاولات}              ║")
    اطبع_سطر(م"║  النقاط: {النقاط}                ║")
    
    إذا (النقاط >= 400)
        اطبع_سطر("║  التقييم: ⭐⭐⭐ ممتاز!    ║")
    وإلا إذا (النقاط >= 200)
        اطبع_سطر("║  التقييم: ⭐⭐ جيد جداً    ║")
    وإلا
        اطبع_سطر("║  التقييم: ⭐ حاول مجدداً   ║")
    نهاية
    
    اطبع_سطر("╚══════════════════════════╝")
نهاية

# ═══════════════════════════════════════
# حلقة اللعبة الرئيسية
# ═══════════════════════════════════════

دالة العب_جولة(م)
    متغير إعدادات = إعدادات_المستوى(م)
    متغير نطاق = إعدادات["نطاق"]
    متغير حد_المحاولات = إعدادات["محاولات"]
    متغير تلميحات = إعدادات["تلميحات"]
    
    متغير الرقم_السري = عشوائي(1، نطاق)
    متغير المحاولات = 0
    
    اطبع_سطر("")
    اطبع_سطر(م"🎯 اخترت رقماً بين 1 و {نطاق}")
    اطبع_سطر(م"لديك {حد_المحاولات} محاولات!")
    اطبع_سطر("")
    
    بينما (المحاولات < حد_المحاولات)
        متغير متبقي = حد_المحاولات - المحاولات
        متغير تخمين = اقرأ_رقم(م"[{متبقي}] تخمينك: "، 1، نطاق)
        المحاولات = المحاولات + 1
        
        إذا (تخمين == الرقم_السري)
            اطبع_سطر("")
            اطبع_سطر(م"🎉 صحيح! الرقم هو {الرقم_السري}!")
            متغير النقاط = احسب_النقاط(المحاولات، حد_المحاولات، م)
            اعرض_النتيجة(النقاط، المحاولات)
            ارجع صحيح
        وإلا إذا (تخمين < الرقم_السري)
            اطبع_سطر(م"⬆️ أكبر من {تخمين}!")
        وإلا
            اطبع_سطر(م"⬇️ أصغر من {تخمين}!")
        نهاية
        
        # تلميح إضافي
        إذا (تلميحات)
            أعطِ_تلميح(تخمين، الرقم_السري)
        نهاية
    نهاية
    
    # انتهت المحاولات
    اطبع_سطر("")
    اطبع_سطر(م"😔 للأسف! الرقم كان {الرقم_السري}")
    ارجع خطأ
نهاية

# ═══════════════════════════════════════
# البرنامج الرئيسي
# ═══════════════════════════════════════

دالة رئيسية()
    اطبع_سطر("╔══════════════════════════════╗")
    اطبع_سطر("║   🎮 لعبة تخمين الرقم       ║")
    اطبع_سطر("╚══════════════════════════════╝")
    
    متغير يلعب = صحيح
    
    بينما (يلعب)
        متغير المستوى = اختر_المستوى()
        العب_جولة(المستوى)
        
        اطبع_سطر("")
        اطبع("هل تريد اللعب مجدداً؟ (ن/لا): ")
        متغير إجابة = اقرأ()
        
        إذا (إجابة == "لا" أو إجابة == "ل")
            يلعب = خطأ
        نهاية
    نهاية
    
    اطبع_سطر("")
    اطبع_سطر("شكراً للعب! 👋")
نهاية

# تشغيل اللعبة
رئيسية()

🏆 تحديات إضافية

  1. وضع ثنائي اللاعبين — لاعب يختار رقماً والآخر يخمّن
  2. أرقام سالبة — وسّع النطاق ليشمل الأرقام السالبة
  3. جدول الأرقام القياسية — احفظ أفضل النتائج في ملف
  4. نمط السباق — من يخمّن أسرع؟
  5. تلميحات ذكية — "الرقم زوجي" أو "الرقم يقبل القسمة على 5"

ماذا تعلمت؟

  • ✅ توليد أرقام عشوائية عشوائي()
  • ✅ حلقات اللعب مع شرط خروج
  • ✅ التحقق من صحة الإدخال مع حاول/امسك
  • ✅ التعدادات تعداد
  • ✅ الخرائط للإعدادات {"مفتاح": قيمة}
  • ✅ نصوص منسقة م"..."

المشروع التالي:

📊 محلل ملفات CSV →

مُرخَّص بموجب رخصة MIT