اذهب إلى المحتوى

مشروع تحدي إنقاذ السفينة الفضائية من الخطر باستخدام سكراتش


أروى عفان

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

سنعمل في هذا المشروع على:

  • التحكم بوقت انتهاء حدث ما باستخدام كتلة كرّر حتى.
  • استخدام عدة كتل ربط لإظهار خرج المتغيرات على الشاشة.
  • استخدام عدة معاملات منطقية أو، وَ، ليسمع كتل الربط.

لنحصل على النتيجة التالية:

انقر على العلم الأخضر وساعد رائد الفضاء في إنقاذ المركبة الفضائية بإتباع التعليمات الظاهرة على المنصة!

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

اقتباس

معلومة يوجد نوع من الألعاب يدعى غرف الألغاز أو غرف الهروب، ينص مبدأ هذه الألعاب على أنه على اللاعب حل اللغز للخروج من الغرفة أو الانتقال إلى الغرفة التالية، قد تكون هذه الغرف حقيقةً أو افتراضيةً، ولكن المبدأ واحد؛ وهو أن على اللاعب إتمام المهمة بأسرع ما يمكن.

إعداد غرفة اللغز

سنختار في هذه الخطوة خلفيةً مناسبةً لتكون غرفة اللغز، وسنضيف الشخصية والأدوات اللازمة للتحكم بها.

step_2.gif

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

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

اختر الشخصية التي تراها مناسبةً لقيادة المركبة، هل تريد إضافة رائد فضاء بشري، أم تفضل مخلوقًا فضائيًا؟ أو حتى قطة! الخيار متروك لك!

ثانيًا، أضف شخصيتك الرئيسية من مكتبة الكائنات. اخترنا في مثالنا الكائن "Monet".

monet.gif

يمكنك تغيير حجم الكائن وموضعه باستخدام الكتل البرمجية، أو باستخدام نافذة الكائنات:

SpriteWindow.png

ثالثًا، أضف كائن السهم، بكتابة "arrow" في مربع البحث في مكتبة الكائنات. ثم أضف كتلة بث ليرسل الكائن، عند نقره، رسالة تخبر عن الاتجاه الذي يجب أن تتحرك به الشخصية الرئيسية:

Block1.png

انقر على النافذة المنزلقة لكتلة البث ثم انقر على خيار رسالة جديدة، واكتب الاتجاه:

NewMsg.png

رابعًا، ضاعف السهم بالنقر عليه بالزر الأيمن للفأرة، ثم اعكس اتجاهه من خيار الاتجاه في نافذة الكائنات، وسمّه باسم موافق لاتجاهه:

ArrowDirection.png

ثم أضف رسالة بث جديدة باسم اتجاه السهم:

Block2.png

خامسًا، كرّر الخطوة السابقة حتى تحصل على أربع أسهم، ثم ضع الأسهم في زاوية المنصة، كما يلي:

Arrows.png

سادسًا، أضف الكتل التالية على الشخصية الرئيسية لتحريك الكائن عند نقر السهم وفقًا لاتجاهه:

Block3.png

أخيرًا، انقر على العلم الأخضر لتشغيل المشروع واختبر حركة الكائن عند النقر على الأسهم.

التحدي الأول

سنضيف في هذه الخطوة التحدي الأول الذي يتوجب على اللاعب اجتيازه، وهو ضغط زر الإنذار عدة مرات.

Step3.gif

أولًا، أضف الكتل التالية لكائن زر الإنذار الأحمر بحيث يبقى ظاهرًا على المنصة وفي موضع ثابت:

Block4.png

ثانيًا، أنشئ متغيرًا جديدًا، بالنقر على كتل المتغيرات، ثم على خيار إنشاء متغير، وسمّه "مرات ضغط الزر" إذ سنخزن في هذا المتغير عدد مرات الضغط على الزر، لاستخدامها فيما بعد في برنامجنا:

NewVar.png

ثالثًا، أضف الكتل التالية لتعيين العدد 0 كقيمة ابتدائية للمتغير :

Block5.png

رابعًا، أضف كتلة كرّر حتى ثم أضف معامل المساواة = من كتل العمليات داخل شرط كتلة التكرار، واسحب متغير عدد مرات ضغط الزر إلى داخله، كما يلي، وحدد عدد مرات الضغط التي تريدها:

Block6.png

خامسًا، أضف الكتل التالية للسماح للاعب بالضغط على الزر فقط عندما يكون كائن رائد الفضاء قريبًا من الزر:

Block7.png

علينا أن نجعل البرنامج ينفذ ما يلي:

  • يزيد قيمة متغير مرات الضغط على الزر عندما تضغط الشخصية الرئيسية الزر وهي قريبة منه.
  • يصفر قيمة المتغير عندما تضغط الشخصية الزر وهي بعيدة عنه.

وذلك بإضافة الكتل التالية:

Block8.png

اقتباس

معلومة: تحسب المسافة في برنامج سكراتش من منتصف الكائن، فإذا كان الكائن الذي اخترته ذو حجم كبير يجب أن يلامس مركزه مركز الزر.

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

سادسًا، أضف كتلة قُل واسحب داخلها كتلتي اربط واسحب داخلها متغير مرات ضغط الزر، كما يلي:

Block9.png

لا تنسى إضافة مسافة بعد النص في كتلة اربط حتى لا تتداخل النصوص مع بعضها.

سابعًا، أضف كتلة قُل لإعلام اللاعب أن المهمة أنجزت بنجاح بعد الضغط على الزر 5 مرات:

Block10.png

أخيرًا، انقر على العلم الأخضر وأنجز المهمة الأولى لاختبار مشروعك.

التحدي الثاني

سنضيف في هذه الخطوة التحدي الثاني حيث يتوجب على اللاعب إحكام إغلاق مقبض الباب بتدويره عدة مرات.

SecondChallenge.gif

ننصحك بنسخ الكتل التي استخدمناها في الفقرة السابقة والتعديل عليها لأنها تشبه الكتل التي سنستخدمها في هذه الفقرة.

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

ثانيًا، أنشئ متغيرًا جديدًا وسمّه "عدد مرات تدوير المقبض"، ثم انقر على النافذة المنزلقة لكتلة اجعل واختر المتغير الجديد، كما يلي، وغيّره في باقي الكتل أيضًا:

Block11.png

ثم حدد عدد مرات التدوير التي ترغب بها، وغيّر النص في كتلة قُل:

Block12.png

ثالثًا، أنشئ متغيرًا جديدًا وسمّه "مقدار الاستدارة"، إذ يُعّبر هذا المتغير عن الزاوية التي سيستدير بمقدارها المقبض كما لو كان حقيقيًا، ثم أضف الكتل التالية لتصفير قيمته:

Block13.png

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

Block14.png

عندما يدور الكائن بمقدار360 درجة يكون قد دار دورةً كاملةً، إذًا سنضيف الكتل التالية لزيادة قيمة متغيرعدد مرات تدوير المقبض بمقدار 1 عندما تصبح قيمة متغير مقدار الاستدارة 360 درجة، ثم سنصفر قيمته ليبدأ العد من جديد:

Block15.png

خامسًا، انقر على العلم الأخضر واختبر المشروع، حرّك الكائن وانقر على مقبض الباب لإحكام إغلاقه.

لا تنسى أنه يمكنك تعديل بُعد الكائن عن المقبض وزيادته لتوفير الوقت،أو يمكنك تقريب الكائن من المقبض باستخدام الفأرة!

Distance.png

التحدي الثالث

يتوجب على اللاعب في هذا التحدي التخلص من الكويكبات التي تهدد أمان المركبة الفضائية.

ThirdChallenge.gif

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

FillColor.png

لتحصل على الشكل التالي:

draw-crosshair.png

كما يمكنك استخدام الشكل X للمؤشر، بكتابة Button في مربع البحث في مكتبة الكائنات.

ثانيًا، أضف الكتل التالية كي يتبع المؤشر الذي أنشأناه حركة مؤشر الفأرة:

Block16.png

انقر على العلم الأخضر واختبر حركة المؤشر. لاحظ أن المؤشر يتبع حركة الفأرة في جميع أرجاء المركبة! لا تقلق، سنصلح ذلك.

ثالثًا، أضف الكتل التالية بحيث يختفي المؤشر إذًا لم يكن ملامسًا لنافذة غرفة القيادة أو حوافها الخضراء:

Block17.png

شغل المشروع واختبر حركة المؤشر، جرب ما الذي سيحدث إذا أزلت شرط ملامسة اللون الأخضر؟

رابعًا، أضف بعض الصخور من مكتبة الكائنات لتكون بمثابة الكويكبات التي على اللاعب تدميرها، للسرعة ابحث عن "Rocks" في مكتبة الكائنات، ثم عدّل حجمها.

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

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

Block18.png

سادسًا، علينا أن نجعل الكويكبات تتحرك عشوائيًا فقط ضمن نافذة حجرة القيادة، أن أنها يجب أن تلامس كائن النافذة "port" بدون أن تلامس الحواف الخضراء للنافذة، سنستخدم لذلك المعامل المنطقي و لضمان تحقق الشرطين:

Block19.png

شغّل المشروع، أو انقر على لبنة التعريف، ولاحظ كيف أن الكويكبات تتحرك داخل المركبة! علينا إصلاح ذلك.

سابعًا، أضف تأثير الشبح لإخفاء الكويكبات أثناء تحركها، ثم أضف كتلة إزالة المؤثرات الرسومية، كما يلي:

Block20.png

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

ثامنًا، أضف الكتل التالية للتحقق من موضع رائد الفضاء:

Block21.png

تاسعًا، أضف الكتل التالية إلى كائن الكويكبات لتحديد متى يجب أن تنتهي المهمة:

Block22.png

الآن أضف كتلة إذا واسحب داخل شرطها المعامل المنطقي و للتحقق من أن الرائد يجلس على كرسي القيادة، و أن المؤشر يلامس الكويكبات، فإذا تحقق الشرط يجب زيادة قيمة متغير الكويكبات بمقدار 1 واستدعاء لبنة اذهب إلى الموضع كي يظهر الكويكب في موضع جديد:

Block23.png

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

Block24.png

أخيرًا، شغّل المشروع وصوّب على الكويكبات لتدميرها، وتلذذ بطعم النجاح في إنقاذ المركبة!

ترقية المشروع

إليك بعض الإقتراحات لتطوير مشروعك حين يتسنى لك ذلك:

ختامًا

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

ننصحك بتنفيذ مشروع تصميم وتنفيذ برنامج لإنشاء رسومات الماندالا باستخدام سكراتش كخطوتك التالية. وإذا واجهت مشاكل مع برنامج سكراتش فيمكنك الحصول على الدعم والمساعدة عبر إضافة سؤالك في قسم الأسئلة والأجوبة في أكاديمية حسوب؛ ولا تنسى مشاركتنا مشروعك على مجتمع سكراتش في منصة حسوب IO.

ترجمة -وبتصرف- للمقالPuzzle Room من الموقع الرسمي لراسبيري باي.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...