جدول المحتويات:

منصة ذات مستويات لا نهائية على GameGo مع Makecode Arcade: 5 خطوات (بالصور)
منصة ذات مستويات لا نهائية على GameGo مع Makecode Arcade: 5 خطوات (بالصور)

فيديو: منصة ذات مستويات لا نهائية على GameGo مع Makecode Arcade: 5 خطوات (بالصور)

فيديو: منصة ذات مستويات لا نهائية على GameGo مع Makecode Arcade: 5 خطوات (بالصور)
فيديو: World's Largest FREE WILL Debate w/ Top Physicists & Philosophers 2024, ديسمبر
Anonim
Image
Image

GameGo هي وحدة تحكم محمولة للألعاب متوافقة مع Microsoft Makecode تم تطويرها بواسطة TinkerGen STEM education. يعتمد على شريحة STM32F401RET6 ARM Cortex M4 ومصمم لمعلمي العلوم والتكنولوجيا والهندسة والرياضيات أو الأشخاص الذين يحبون الاستمتاع بإنشاء ألعاب فيديو قديمة ، يمكنك اتباع هذا البرنامج التعليمي وتجربة اللعبة في Makecode Arcade simulator ثم تشغيلها على GameGo.

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

اللوازم

GameGo

الخطوة 1: البطل

البطل
البطل

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

أول شيء يجب فعله هو إضافة الخلفية وخريطة التجانب. لقد اخترت خريطة مربعات طويلة بحجم 32 × 8 - بالنسبة للمستوى الأول ، سنقوم برسمها يدويًا ، كما في الصورة 2. ثم نضيف شخصيتنا القابلة للعب مع تعيين mySprite على رمز كتلة Player اللطيفة ووضعها في الجزء العلوي من المربع 0-5. قمنا أيضًا بتعيين الكاميرا للتحرك بشخصية قابلة للعب والتحكم في حركتها اليمنى واليسرى - سنقوم بتعيين سرعة الحركة على 0 ، نظرًا لأن شخصيتنا لا ينبغي أن تكون قادرة على الطفو بحرية على الخريطة على طول الاتجاه y. أضف اثنين من الكتل المضغوطة على الزر ، واحدة للزر الأيسر ، وواحدة للزر الأيمن. عند الضغط على الزر الأيسر ، نتحقق مما إذا كان اتجاهنا "يسارًا" قبل الضغط على الزر. إذا كان الأمر كذلك ، فإننا نواصل الذهاب إلى اليسار. إذا لم يكن الأمر كذلك ، فنحن بحاجة إلى قلب صورة الرموز الخاصة بشخصيتنا. منطق مماثل للحركة الصحيحة.

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

أعتقد أننا صنعنا بطلاً يستحق التحدي الآن! حسنًا ، أين التحدي؟

الخطوة الثانية: الأعداء

الأعداء
الأعداء

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

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

الخطوة الثالثة: السلاح

السلاح
السلاح

بالنسبة للسلاح ، كنت أستوحي الإلهام من إحدى ألعاب Nintendo القديمة حول شقيقين من السنجاب:) دعونا نضيف النقوش المتحركة إلى المستوى ، بالطريقة نفسها التي نقوم بها بإضافة الأعداء. نقوم أيضًا بتهيئة متغير has_crate إلى -1 ، مما يشير إلى أن شخصيتنا لا تحمل صندوقًا. في حالة تداخل لاعب من نوع sprite مع كتلة طعام أخرى من النوع ، نتحقق مما إذا كنا نحتفظ بصندوق بالفعل وإذا لم نفعل ذلك ، فسنقوم بتعيين متغير has_crate على فهرس كائن الصندوق في القائمة. ثم في كتلة تحديث اللعبة ، نقوم بتحريك هذا الكائن مع كائن اللاعب وإذا تم الضغط على الزر A ، فإننا نغير سرعة vx للصندوق إلى 1200 أو -1200 (اعتمادًا على اتجاه حركة الشخصية). قمنا أيضًا بتعيين متغير has_crate إلى -1 مرة أخرى وقمنا بتغيير نوع الكائن في الصندوق الذي تم إطلاقه في الهواء الآن إلى Projectile.

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

أوشكت على الانتهاء الآن! اللعبة قابلة للعب الآن ، ولكن لا يزال هناك أي تحدٍ - مستوى واحد فقط وبسيط إلى حد ما في ذلك. يمكننا إنشاء المزيد من المستويات يدويًا أو كتابة خوارزمية من شأنها أن تولد هذه المستويات تلقائيًا لنا - على الرغم من أنها لن تكون جميلة مثل المستويات التي صنعها الإنسان بالطبع.

الخطوة 4: مغامرات لانهائية

مغامرات لانهائية
مغامرات لانهائية
مغامرات لانهائية
مغامرات لانهائية
مغامرات لانهائية
مغامرات لانهائية

تبدو وظيفة إنشاء المستوى العشوائي مخيفة بعض الشيء في البداية ، لكنها في الحقيقة عبارة عن سلسلة بسيطة من الخطوات لإنشاء مستوى جديد بطريقة حسابية ، بالطريقة التي يكون فيها المستوى الجديد مقبولاً للشخصية القابلة للعب. أولاً ، نحن نحرص على نقل شخصيتنا إلى هذا المستوى الجديد - باستخدام كائن من النوع الذي يتداخل لاعب … في الموقع - نستخدم بلاط باب البوابة كمحفز إلى مستوى جديد. في دالة create_level نقوم بتهيئة صف المتغيرات ، العمود والصدفة. نقوم أيضًا بإنشاء خريطة تجانب جديدة ، بنفس الحجم كما في السابق ، لكنها فارغة. إليك بعض التحذير - من أجل استخدام set… at tilemap row… col… block ، يجب أن تحتوي خريطة tilemap على هذه المربعات المعينة --- وهذا يعد بديهيًا بعض الشيء وربما خطأ في Makecode. لذا ، ما عليك القيام به هو إنشاء خريطة tilemap ، ووضع جميع أنواع البلاط التي تريد استخدامها في إنشاء عشوائي ثم مسحها.

نضع القطعة الأولى يدويًا (0x6) واللاعب فوقها. ثم نكرر الخطوة التالية 30 مرة - الخطوة التالية هي سلسلة بسيطة من فحوصات True-False ، والتي تحدد ما إذا كان العمود التالي سيكون 1) نفس المستوى السابق 2) واحد لأعلى أو 3) واحد لأسفل. هناك أيضًا فرصة صغيرة جدًا لأن تكون القطعة التالية عبارة عن بلاط حمم - لا نريد الكثير منها! بعد إنشاء كل بلاطة ، نملأ المساحة الموجودة تحتها بالحمم البركانية - فقط من أجل الجمال. كخطوة أخيرة ، نضيف الأعداء والصناديق ونضعهم فوق بلاطات النشر العشوائية.

الخطوة 5: المغامرة تبدأ

تبدأ المغامرة
تبدأ المغامرة

هاهو! لقد انتهينا من لعبة المنصات الخاصة بنا ويمكن لبطلنا الذهاب في مغامرة لا نهائية ، وهزيمة الخفافيش وتدمير الصناديق. إذا كنت تواجه مشكلات ، فيمكنك تنزيل الكود من مستودع GitHub الخاص بنا.

إنه مجرد مخطط وهناك بالتأكيد بعض التحسينات التي يمكن إجراؤها ، على سبيل المثال أنواع مختلفة من الأعداء والمكافآت وتوليد المستوى الأفضل وما إلى ذلك. إذا قمت بعمل نسخة محسنة من اللعبة ، فشاركها في التعليقات أدناه! لمزيد من المعلومات حول GameGo والأجهزة الأخرى للصانعين ومعلمي العلوم والتكنولوجيا والهندسة والرياضيات ، قم بزيارة موقعنا على الإنترنت ، https://tinkergen.com/ والاشتراك في نشرتنا الإخبارية.

أنشأت TinkerGen حملة Kickstarter لـ MARK (Make A Robot Kit) ، وهي مجموعة روبوت لتعليم الترميز ، والروبوتات ، والذكاء الاصطناعي!

موصى به: