0 من 15 يومًا نسبة الإنجاز: 0%
الأسبوع الثاني - اليوم التاسع

الاستشعار واكتشاف التصادم

⏱ ساعة واحدة ⚙ عملي
مخرجات التعلم
  • دمج لبنات "الاستشعار" (Sensing) مباشرة داخل العبارات الشرطية.
  • اكتشاف أحداث التصادم عندما يلامس الكائن كائناً آخر محدداً على المنصة.
  • اكتشاف الحدود والعقبات باستخدام لبنة الاستشعار "ملامس للون [ ]؟".
  • برمجة سلوكيات الاستجابة الفورية (مثل إعادة ضبط الموضع) عند حدوث التصادم.

1. دمج لبنات الاستشعار في العبارات الشرطية

تقوم لبنات الاستشعار (ذات اللون الأزرق الفاتح) بجمع معلومات فورية حول بيئة المشروع، مثل إحداثيات مؤشر الفأرة، المسافات، الأزرار المضغوطة، أو حدوث التصادمات. لكي يتفاعل برنامجك مع هذه المعلومات، تقوم بوضع لبنات الاستشعار هذه داخل الفراغ السداسي للبنات الشرطية (مثل لبنة "إذا ... إذن"). يتيح ذلك إنشاء مقاطع برمجية تراقب باستمرار أي تغييرات تحدث على المنصة وتستجيب لها فوراً.

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

Sprite-to-Sprite Collision Detection
الشكل 9.1: المنطق البرمجي لاكتشاف التصادم بين كائنين في سكراتش.

2. اكتشاف التصادم بين الكائنات

يُعد اكتشاف التصادم (Collision Detection) آلية محورية في تصميم الألعاب. باستخدام لبنة الاستشعار ملامس لـ [الكائن]؟، يمكن للكائن أن يكتشف ما إذا كانت حدوده تتداخل مع كائن آخر. على سبيل المثال، إذا لامست شخصية اللاعب كائن "عملة معدنية"، يمكن لذلك أن يُشغّل مقطعاً برمجياً يزيد النتيجة ويخفي العملة، أو إذا لامست "عدواً"، يُطلق حالة "انتهت اللعبة" (Game Over).

تتم حسابات تصادم الكائنات في خلفية البرنامج؛ حيث يتحقق الحاسوب في كل إطار (Frame) مما إذا كانت هناك أي بكسلات متداخلة بين حدود الكائنين. إذا تم اكتشاف التصادم، فإنه يُفعل المسار البرمجي المخصص، مما يسمح بتطبيق آليات القتال أو جمع العناصر في الوقت الفعلي.

Touching Color Sensing
الشكل 9.2: استشعار التصادم بناءً على اللون، والذي يُستخدم لاكتشاف جدران وعقبات خلفية المنصة.

3. اكتشاف الحدود والعقبات باستخدام مستشعر الألوان

يمكنك أيضاً اكتشاف الحدود باستخدام لبنة ملامس للون [ ]؟. تتحقق هذه اللبنة مما إذا كان أي بكسل من الكائن يتداخل مع لون معين موجود على خلفية المنصة. يُعد هذا الأسلوب مفيداً للغاية لبرمجة الحدود، أو جدران المتاهات، أو تتبع مسارات السباق دون الحاجة إلى إجراء عمليات حسابية معقدة للإحداثيات.

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

Collision Reset Flowchart
الشكل 9.3: مخطط انسيابي يوضح تسلسل الاستجابة: اكتشاف التصادم ثم إعادة ضبط الإحداثيات.

4. برمجة الاستجابة الفورية للتصادم

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

يمكن أن تكون الاستجابات للتصادم بصرية، صوتية، أو مكانية. إعادة الكائن إلى نقطة البداية يمثل "عقوبة" على التصادم. يمكنك أيضاً تشغيل مؤثرات صوتية أو تقليل نقاط الصحة (Health) لتزويد اللاعب بتغذية راجعة واضحة وسريعة.

نشاط عملي

تطبيق عملي: نظام إنذار التصادم وجمع العناصر

  1. أضف كائن القط "Cat" (ليكون اللاعب) وضعه في الجانب الأيسر من المنصة. أضف كائن التفاحة "Apple" (ليكون الهدف) وضعه في الجانب الأيمن.
  2. أضف مقطعاً برمجياً للقط: "عند النقر على العلم الأخضر"، "اذهب إلى الموضع س: -200 ص: 0". ثم أضف حلقة "كرِّر باستمرار".
  3. بداخل الحلقة، أضف: تحرك 4 خطوة. ثم أضف شرط: إذا <ملامس لـ (Apple)؟> إذن، وبداخله أضف أمر شغّل الصوت (Chirp) و قل [أمسكت بها!] لمدة 2 ثانية.
  4. باستخدام محرر الرسام، ارسم خطاً أحمر عمودياً في منتصف خلفية المنصة (ليكون عقبة).
  5. أضف شرطاً ثانياً داخل حلقة القط: إذا <ملامس للون [الأحمر]؟> إذن، وبداخله أضف أمر العودة إلى نقطة البداية: اذهب إلى الموضع س: -200 ص: 0.
شرح المقطع البرمجي النموذجي
  1. تهيئة كائن اللاعب: [عند النقر على العلم الأخضر] -> [اذهب إلى الموضع س: (-200) ص: (0)].
  2. إعداد المراقبة المستمرة: أضف حلقة -> [كرِّر باستمرار] (من فئة التحكم).
  3. إضافة الحركة: بداخل الحلقة، أضف -> [تحرك (4) خطوة] (من فئة الحركة).
  4. اختبار تصادم الهدف (النجاح): أضف -> [إذا <ملامس لـ (Apple)؟> إذن] -> [شغّل الصوت (Chirp)] -> [قل (أمسكت بها!) لمدة (2) ثانية].
  5. اختبار تصادم العقبة (حدود اللون): أضف -> [إذا <ملامس للون (الأحمر)؟> إذن] -> [اذهب إلى الموضع س: (-200) ص: (0)] (لإعادة اللاعب للبداية).
  6. قم بتشغيل المشروع. سيسير القط نحو اليمين؛ إذا اصطدم بالخط الأحمر سيعود لنقطة البداية، وإذا تجنبناه ووصل للتفاحة بنجاح سيقول "أمسكت بها!".