البث وإرسال الرسائل
- شرح مفهوم "البث" (Broadcasting) لتنسيق عمل الكائنات المتعددة بشكل غير مرئي.
- إرسال رسائل مخصصة من كائن إلى كائن آخر.
- برمجة الكائنات لتنفيذ إجراءات معينة فقط عند تلقي رسالة محددة.
- تصميم تسلسل تفاعلي تتبادل فيه الكائنات "الحديث" ذهاباً وإياباً.
1. شرح مفهوم البث
في سكراتش، تعمل الكائنات وفق جداول زمنية مستقلة. إذا أردت أن يطلب الكائن (أ) من الكائن (ب) القيام بشيء ما، فهو بحاجة إلى وسيلة للتواصل معه. البث (Broadcasting) هو آلية لإرسال الرسائل البرمجية. عندما يرسل كائن ما رسالة بث، فإنه يُرسل إشارة إلى المشروع بأكمله، وتستمع جميع الكائنات الأخرى (وكذلك المنصة) لهذه الإشارة. سيتم تفعيل أي مقطع برمجي يبدأ بلبنة استقبال مطابقة لتلك الرسالة، مما يتيح تنسيقاً دقيقاً ومنظماً بين الكائنات.
يشبه البث قيام مدير مدرسة بإصدار إعلان عبر الإذاعة المدرسية. يتحدث المدير (يُرسل البث)، وتستمع جميع الفصول (الكائنات) للإعلان. ومع ذلك، فقط الفصول التي يعنيها هذا الإعلان هي التي ستتخذ إجراءً. في البرمجة، يفصل هذا الأسلوب بين المقاطع البرمجية وينسق الأحداث بشكل نظيف ومرتب.
2. إرسال رسائل مخصصة
باستخدام لبنة بث [الرسالة1]، يمكنك إنشاء مشغلات (Triggers) مخصصة لأكوادك
البرمجية. عندما يُشغل الكائن هذه اللبنة، فإنه يُرسل رسالة نصية محددة إلى جميع أنحاء
المشروع. يمكنك أيضاً استخدام لبنة بث [الرسالة1] وانتظر، والتي توقف المقطع
البرمجي للكائن المُرسل مؤقتاً حتى تنتهي جميع الكائنات المستقبلة من تنفيذ أوامرها بشكل
كامل. هذا الأمر ضروري للغاية للتحكم في سرعة الحوارات وتسلسل الأحداث المعقدة.
يمكنك تسمية الرسائل المخصصة بأي اسم تريده، مثل "game_start" أو "enemy_spawn" أو "stage_clear". تسمية الرسائل بشكل وصفي وواضح يعتبر أمراً بالغ الأهمية لتنظيم المشاريع الكبيرة وضمان عدم الخلط بين مشغلات الحوار والانتقال بين مراحل اللعبة.
3. برمجة الكائنات للاستجابة للرسائل
لالتقاط عمليات البث، نستخدم لبنة الحدث الصفراء عندما أتلقى [الرسالة1]. تعمل
هذه اللبنة كبوابة (مشغل)؛ حيث يتم وضعها في أعلى المقطع البرمجي وتظل في حالة انتظار سكون.
بمجرد إرسال الرسالة المطابقة، يتم تفعيل اللبنة وتشغيل الأوامر المتصلة أسفلها. يمكن لعدة
كائنات الاستماع لنفس رسالة البث، مما يسمح لرسالة واحدة بتشغيل إجراءات مختلفة في عدة
شخصيات في نفس الوقت.
على سبيل المثال، يمكن أن تؤدي رسالة البث "game_over" إلى جعل الكائن Giga يقول "أوه لا!"، واختفاء الكائن Tera، وتحول لون الخلفية إلى الأحمر، وتشغيل موسيقى حزينة. يتيح ذلك إنشاء استجابات معقدة ومتعددة الأحداث بناءً على مشغل (Trigger) واحد فقط.
4. تصميم حوار متبادل (ذهاباً وإياباً)
باستخدام عمليات البث المتسلسلة، يمكنك برمجة محادثات معقدة بين الشخصيات. يبدأ الكائن (أ) بالحديث، ثم يبث رسالة "دور_ب". يتلقى الكائن (ب) رسالة "دور_ب"، ليتحدث بدوره ثم يبث رسالة "دور_أ". هذه الدورة التبادلية تُبقي فقاعات الحوار متزامنة وتمنع الكائنات من التحدث في نفس الوقت، مما يعرّف المتعلمين بمفاهيم بروتوكولات الشبكة الأساسية.
بدون استخدام عمليات البث، ستتطلب مزامنة الحوار حسابات يدوية ومملة لأوقات الانتظار. فإذا كان الكائن (أ) يتحدث لمدة 3 ثوانٍ، يجب أن ينتظر الكائن (ب) 3 ثوانٍ بالضبط. وإذا قمت لاحقاً بتعديل وقت حديث الكائن (أ) إلى 4 ثوانٍ، سيتعين عليك البحث عن لبنة الانتظار الخاصة بالكائن (ب) وتحديثها يدوياً. عملية البث تستبدل هذه الحسابات المعقدة بإشارات أحداث قوية ومرنة.
تطبيق عملي: برمجة حوار متناسق
- أضف كائنين (مثل 'Giga' و 'Tera') بحيث يقفان مقابل بعضهما البعض على المنصة.
- للكائن Giga، قم بإنشاء مقطع برمجي يبدأ بـ "عند النقر على العلم الأخضر": أضف لبنة
قل [مرحباً Tera!] لمدة 2 ثانية، ثم أضف لبنةبث [Giga_Greet]. - للكائن Tera، قم بإنشاء مقطع برمجي يبدأ بلبنة الحدث
عندما أتلقى [Giga_Greet]. - أسفل هذه اللبنة في الكائن Tera، أضف:
قل [مرحباً Giga! هل أنت مستعد للبرمجة؟] لمدة 2 ثانية، ثم أضف لبنةبث [Tera_Reply]. - عُد إلى الكائن Giga، وأضف مقطعاً برمجياً ثانياً يبدأ بلبنة الحدث
عندما أتلقى [Tera_Reply]. - أسفل هذا المقطع الثاني للكائن Giga، أضف:
قل [بالتأكيد! لنبدأ!] لمدة 2 ثانية.
شرح المقطع البرمجي النموذجي
- إعداد الكائن Giga (البداية): [عند النقر على العلم الأخضر] -> [قل (مرحباً Tera!) لمدة (2) ثانية] -> [بث (Giga_Greet)].
- إعداد الكائن Tera (الاستقبال والرد): [عندما أتلقى (Giga_Greet)] -> [قل (مرحباً Giga! هل أنت مستعد للبرمجة؟) لمدة (2) ثانية] -> [بث (Tera_Reply)].
- إعداد الكائن Giga (الرد النهائي): [عندما أتلقى (Tera_Reply)] -> [قل (بالتأكيد! لنبدأ!) لمدة (2) ثانية].
- انقر على العلم الأخضر. ستتحدث Giga أولاً، وتنتظر Tera ثم ترد، وأخيراً تختتم Giga الحوار. يوضح هذا كيفية بناء محادثة مثالية ومزامنة دقيقة باستخدام نظام البث!