رسائل
لماذا هي جيّدة، وكيف نعملها؟
لعبة واحدة – شخصيّات كثيرة
في دروس سابقة قمنا بإنتاج ألعاب صغيرة ورسوم متحرّكة (أنيماتسيا) احتوت على عدّة شخصيّات.
حقًّا توجد شخصيّات كثيرة في كلّ لعبة نلعبها .
حاولوا أن تتخيّلوا لعبة تلعبونها، وفكّروا كم شخصيّة مختلفة تظهر كلّ لحظة على الشّاشة (تذكّروا، التّفاحة أو الكرة أيضًا اللّاتي هن جزء من اللّعبة معرّفات كـ "شخصيّة".
تحدّيات الاتّصال
التحدّي بتطوير لعبة لا يكمن في كثرة الشّخصيّات، وانّما في (الأساس) في التواصل (الاتّصال) بينها.
ما هو المقصود بكلمة "اتّصال"؟
تخيّلوا سباق سيّارات. كلّ سائقي وسائقات السّباق سيخرجون إلى الطريق في نفس اللّحظة – الحكم هو الذي يعطي إشارة انطلاق السّباق. هو يقوم بذلك بواسطة تنزيل علم. الحكم ينقل للسائقين رسالة: إبدأوا بالسير!
كيف نؤدّي لذلك في الرّمز أنّه عندما ينزل العلم تعلم السّيّارات أنّ بإمكانها الانطلاق؟
يتوجّب علينا بثّ رسالة كهذه. رسالة هي طريقتنا في سكراتش لإنشاء اتّصال بين شخصيّات مختلفة. بإمكانكم أن تجرّبوا!
نقوم ببثّ رسائل
كيف نبثّ الرسائل في سكراتش؟
الرسالة التي نبثّها هي حدث – شيء – سيحدث في اللّعبة وسيجرّ خلفه أحداثًا في الشّخصيّات المختلفة.
لذلك، سنفتح قائمة الأحداث.
نقوم ببثّ رسائل
في القائمة ثلاث لَبِنَات تتعامل مع الرّسالة:
بثّ رسالة
استلام رسالة
لَبِنتان تقومان ببثّ رسالة
(على سبيل المثال، بعد أن يتحقّق شرط معيّن)
لَبِنة واحدة هي استلام رسالة كـ"حدث"،
بعده سيكتب رمز معيّن
هل علمتم؟
الخلفيّة أيضًا بإمكانها استيعاب الرّسالة والتغيّر حسبها.
نعطي إشارة الانطلاق!
في التّمرين التّالي هنالك حكم، عندما نضغط على العلم الأخضر يعطي إشارة الانطلاق (يصفّر ويؤشّر معلنًا بداية المسابقة). كلّ شخصيّة من الشّخصيّات المشاركة في السّباق عليكم أن تجعلوها "تصغي" للرّسالة التي يبثّها الحكم ويجعلها تمشي باتّجاه خطّ النهاية بعد أن يعطي الحكم إشارة الانطلاق فقط. حتّى تكون اللّعبة أكثر إثارة، اهتمّوا بأن يصلوا لخطّ النّهاية في مجال زمنيّ عشوائيّ يتراوح بين ثانية إلى ثانيتين.
اللّبِنَات التي يتوجّب عليكم التعرّف عليها هي:
هذه المرّة قمنا ببثّ الرّسالة من أجلكم، لذلك يتوجّب عليكم الإصغاء لهذه الرّسالة.
"بثّ رسالة"
"عندما يتمّ استلام"
انتبهوا:
ممتاز! رأينا كيف أنّه بواسطة رسالة واحدة ("إعطاء إشارة الانطلاق") بُعِثت من قبل أي شخصيّة (الحكم) – ثلاث شخصيّات مختلفة تقوم بالتّنفيذ (تبدأ بالسير باتّجاه خطّ النّهاية).
الآن جرّبوا أنتم إرسال الرّسالة!
أدخلوا إلى التّمرين التّالي، وابعثوا رسالة عندما تصل السّيّارة الأولى لخطّ النّهاية، وهكذا سيكون بإمكاننا معرفة من هو الفائز الكبير في المسابقة!
بحاجة للمساعدة؟ انتقلوا إلى الشريحة التّالية وسوف تحصلون على رمز ونصيحة أيضًا!
رمز
لَبِنَات ربّما تريدون استعمالها لكي تتوصّلوا للحلّ:
نصيحة: فكّروا بطريقة تمنع من السّيّارات التي تصل للمركز الثّاني والثّالث أن تبعث رسالة
انتبهتم لشيء مرهق قليلاً في حلّنا السّابق؟
ما الذي يمكن كتابته بطريقة أخرى، بحيث نستعمل خلفيّات ولَبِنات رمز أقلّ؟
في الحلّ الذي اقترحناه استعملنا ثلاث خلفيّات مختلفة سنكتب عليها اسم السّيّارة الفائزة.
ماذا سيحدث إذا قمنا بتغيير إحدى الشّخصيّات.�أو إذا أردنا إضافة سيّارات أخرى؟
سنضطرّ للعمل بجدّ أكثر!
إذا كنتم تريدون إضافة سيّارات أخرى للسّباق، حاولوا أن تفكّروا ما الذي يعنيه هذا من ناحية العمل المطلوب.
نحن نريد في البرمجة تكرار أنفسنا في الرّمز بأقلّ قدر ممكن وهذا يسمّى أحيانًا .DRY - don't repeat yourself
هذا مبدأ مهمّ ليس لأنّنا كسالى ولا نرغب بكتابة الكثير، وإنّما لأنّه يهمّنا أن يكون إجراء التّغييرات في البرنامج في حالة أردنا تغيير شيء في اللّعبة سهلاً ومريحًا.
حاولوا أن تفكّروا كيف يمكننا استعمال المتغيّر بشكل صحيح�(هذا الذي سمّيناه "فائز" في حلّنا) حتّى نعرض شاشة تصف من فاز في السّباق، بدون إنتاج شاشات كثيرة وبدون أن نستعمل ثلاث لَبِنات
.�أدخلوا إلى الحلّ السّابق وحرّروه.
بحاجة إلى رمز؟ بإمكانكم أن تلقوا نظرة في الشريحة التالية.
"إذا... عندها..."
رمز
على ما يبدو، تريدون استعمال لَبِنَة من هذا النّوع ودمجها بالمتغيّر "فائز".
سنجري مقارنة
في الطريقة الثّانية للحلّ: كتبنا رمزًا واحدًا فقط - الصّفارة تستعمل المتغيّر "فائز" وتقول اسمه. وهكذا إذا قمنا بتغيير إحدى السّيّارات أو إضافة سيّارات، لن نضطرّ لأن ننفّذ أي تغيير في الرّمز.
في الطريقة الأولى للحلّ:
جهزنا بشكل خاصّ خلفيّة فوز مختلفة لكلّ سيّارة.
كتبنا رمزًا للخلفيّة، سيتغيّر حسب المتغيّر "فائز".
والآن حقًّا سننتج لعبة
سندمج الذي تعلّمناه في الدّروس الأخيرة.
قوموا بإنتاج لعبة يتوجّب على اللّاعب بها أن يخمّن أيّ سيّارة ستصل أولاً.
بعد ذلك يبدأ السّباق، مثل ما تعلّمنا في الدّرس.
إذا كان التّخمين صحيحًا – نحصل على 10 نقاط.
في المرحلة القادمة يظهر سؤال: هل تريدون أن تجرّبوا جولة إضافيّة؟
إذا كان الجواب نعم – ممكن أن نخمّن من سيفوز في السّباق.
السّباق سيستمرّ لجولات إضافيّة حتّى نختار أن ننهي اللّعب. في هذه الحالة سيحصل اللّاعب على إشارة إلى عدد النقاط التي جمعها.
بعض الرّموز
في البداية، طبعًا، ابتداء قيّم المتغيّرات – من الفائز وعدد النقاط.
بعد ذلك بثّوا رسالة أنّه بدأت جولة جديدة. كلّ جولة تحتوي على المراحل التّالية:
هذه ليست نهاية الجولة! انتقلوا إلى الشريحة التّالية
بعض الرّموز
بعد استلام رسالة "فوز":
(هذه العمليّات لا يجب أن تحدث في كلّ الشّخصيّات،
تحدث فقط في الشّخصيّة التي تسأل وتخبر عن ما يحدث في اللّعبة)
إذا كان جواب هذا السؤال "نعم"،�تبدأ كلّ الجولة من جديد – بثّوا رسالة أنّه ابتدأت جولة جديدة.
إذا كان الجواب لا – يجب أن تظهر إشارة النّهاية، وتشمل النّقاط التي جمعتموها.
تلخيص
تعرّفنا على الرّسائل وفهمنا أهميّتها (الاتّصال بين أقسام مختلفة في اللّعبة – شخصيّات، خلفيّات وإلخ).
إذًا ماذا تعلّمنا؟
تمرّنّا على استعمال الرّسائل، أصغينا إليها وبعثناها أيضًا.
تعلّمنا عن أهميّة كتابة رمز لا يكرّر نفسه،�ورأينا كيف أنّ الدّمج بين المتغيّرات والرّسائل يمكنه أن يكون قويًّا!
في هذا الدّرس تعلّمنا وجربنا عدّة أشياء ستمكّننا من فعل الكثير وإنتاج ألعاب ممتعّة! أنتم مدعوون للتمرّن حتّى الدّرس القادم ومن هناك – السماء هي الحدّ!