فهرست مطالب:

Platformer با سطوح بی نهایت در GameGo With Makecode Arcade: 5 مرحله (همراه با تصاویر)
Platformer با سطوح بی نهایت در GameGo With Makecode Arcade: 5 مرحله (همراه با تصاویر)

تصویری: Platformer با سطوح بی نهایت در GameGo With Makecode Arcade: 5 مرحله (همراه با تصاویر)

تصویری: Platformer با سطوح بی نهایت در GameGo With Makecode Arcade: 5 مرحله (همراه با تصاویر)
تصویری: КАК НАСТРОИТЬ L4D2 2024, جولای
Anonim
Image
Image

GameGo یک کنسول بازی قابل حمل یکپارچهسازی با سیستمعامل Microsoft Makecode است که توسط آموزش TinkerGen STEM توسعه یافته است. این بر اساس تراشه STM32F401RET6 ARM Cortex M4 ساخته شده است و برای مربیان STEM یا افرادی که از ایجاد بازی های ویدئویی یکپارچه لذت می برند ساخته شده است. می توانید این آموزش را دنبال کنید و بازی را در شبیه ساز Makecode Arcade امتحان کنید و سپس آن را در GameGo اجرا کنید.

در این مقاله ما قصد داریم یک بازی platformer با سطوح بی نهایت تولید تصادفی بسازیم. در یک platformer ، شخصیت کنترل شده توسط بازیکن باید بپرد و از بین سکوهای معلق بالا برود و از موانع جلوگیری کند. محیطها اغلب دارای زمینهای ناهموار با ارتفاع متفاوت هستند که باید از آنها عبور کرد. بازیکن اغلب کنترل ارتفاع و فاصله پرش ها را دارد تا اجازه ندهد شخصیت آنها به مرگ برسد یا پرش های لازم را از دست بدهد. همه این عناصر اساسی را پیاده سازی می کنیم و همچنین یک تابع سفارشی اضافه می کنیم که با رسیدن به پایان آخرین ، سطوح جدیدی ایجاد می کند. شروع کنیم!

تدارکات

GameGo

مرحله 1: قهرمان

قهرمان
قهرمان

به عنوان اولین گام ما آلترهگو را ایجاد می کنیم. مهارتهای نقاشی من بسیار بد است ، بنابراین تصمیم گرفتم از گالری استفاده کنم ؛) بر خلاف بازی قبلی که ساخته بودیم ، در این platformer شخصیت قابل بازی ما فقط می تواند به چپ و راست حرکت کند و همچنین می تواند بپرد. بنابراین به جای داشتن دو اسپری متفاوت برای شخصیت اصلی ، یکی این بار کافی است - ما فقط می توانیم هنگام تغییر جهت ، تصویر اسپریت را تلنگر بزنیم.

اولین کاری که باید انجام دهید افزودن پس زمینه و نقشه کاشی است. من نقشه کاشی بلند 32x8 را انتخاب کرده ام - برای سطح اول ما آن را به صورت دستی ترسیم می کنیم ، مانند تصویر 2. سپس ما شخصیت قابل پخش خود را با set mySprite به sprite از نوع بلوک Player اضافه می کنیم و آن را در بالای کاشی 0-5 قرار می دهیم. به ما همچنین دوربین را برای حرکت با شخصیت قابل پخش و کنترل حرکت چپ و راست آن تنظیم می کنیم - ما سرعت حرکت را روی 0 تنظیم می کنیم ، زیرا شخصیت ما نباید بتواند آزادانه در جهت y در نقشه حرکت کند. دو بلوک فشرده روی دکمه… را اضافه کنید ، یکی برای دکمه سمت چپ ، یکی برای راست. وقتی دکمه سمت چپ فشار داده می شود ، قبل از فشار دادن دکمه ، بررسی می کنیم که آیا جهت ما "چپ" بوده است یا خیر. اگر چنین بود ، ما فقط به چپ ادامه می دهیم. اگر اینطور نبود ، ما باید تصویر Sprite شخصیت خود را تلنگر بزنیم. منطق مشابهی برای حرکت درست

در حال حاضر خوب است ، تنها مشکل این است که به نظر می رسد قهرمان ما نمی تواند بر هیچ مانعی غلبه کند. بنابراین ما باید پرش را اضافه کنیم. ما کنترل های فشار دکمه بالا را کنترل می کنیم و وقتی تشخیص داده شد ، پرش متغیر را روی 1 قرار می دهیم ، زمان شروع حرکت های پرش را یادداشت می کنیم و سرعت Sprite سرعت شخصیت را بر روی -200 (بالا رفتن) تنظیم می کنیم. سپس پس از مدت زمان مشخص ، سرعت را روی 200 (پایین آمدن) تنظیم می کنیم ، بنابراین قهرمان ما به عنوان موشک به آسمان شلیک نمی کند.

من فکر می کنم ما یک قهرمان شایسته چالش ایجاد کردیم! خوب ، چالش کجاست؟

مرحله 2: دشمنان

دشمنان
دشمنان

ما از یک ساختار آرایه برای ذخیره کردن اسپریت دشمنان استفاده خواهیم کرد. برای نوع دشمنان ، ما از میانبر کمی استفاده می کنیم و از خفاش ها استفاده می کنیم:) نه مرجع ویروس کرونا ، فقط خفاش ها می توانند پرواز کنند ، به همین دلیل ما نیازی به "شبیه سازی" جاذبه برای آنها نداریم ، همانطور که با شخصیت قابل بازی خود انجام می دهیم. برای ایجاد خفاش های تازه ایجاد شده بر روی کاشی تخم ریزی تصادفی (با کمی علامت سفید مشخص شده است) و تنظیم سرعت vx آنها بر روی -10 (به آرامی به سمت راست حرکت می کند) از بلوک دشمن ایجاد کنید. سپس در هنگام به روزرسانی بازی هر بلوک 2000 میلی ثانیه ، ما در هر مورد از لیست دشمنان تکرار می کنیم و به طور تصادفی جهت آنها را تغییر می دهیم ، در حالی که در صورت لزوم نوک خفاش ها را نیز ورق می زنیم (برای نشان دادن تغییر جهت حرکت). در نهایت ، ما Sprite of kind Player را با بلاک otherSprite of kind Enemy همپوشانی می کنیم ، که در آن یک بررسی ساده انجام می دهیم که آیا بازیکن قبلاً ضربه خورده است یا خیر. اگر این یک زندگی را کسر نمی کردیم ، پرچم ضربه را روی 1 قرار دهید (ضربه خورده است) و زمان سنج را شروع کنید. هنگامی که 500 میلی ثانیه از زمان آخرین ضربه گذشته است ، ما ضربه پرچم را به 0 تغییر می دهیم. ما این کار را انجام می دهیم تا بازیکن پس از برخورد با دشمن از دست دادن تعداد زیادی از زندگی گرانبها جلوگیری کند.

بیایید بررسی کنیم وضعیت ما چگونه است. خوب ، مطمئناً این صحنه پر جنب و جوش تر به نظر می رسد و همه خفاش ها به اطراف پرواز می کنند و بازیکن ما را گاز می گیرند. اکنون ما برای انجام کارهای قهرمانانه خود به سلاح نیاز داریم!

مرحله 3: سلاح

اسلحه
اسلحه

در مورد اسلحه ، من از یک بازی قدیمی نینتندو در مورد دو برادر chipmunk الهام می گرفتم:) بیایید اسپریت جعبه را به سطح اضافه کنیم ، همان روشی که با اضافه کردن دشمنان انجام می دهیم. ما همچنین متغیر has_crate را به -1 راه اندازی می کنیم ، که نشان می دهد شخصیت ما جعبه ای ندارد. در Sprite of kind Player با دیگر Block های Sprite of kind همپوشانی دارد ، بررسی می کنیم که آیا قبلاً جعبه ای در دست داریم و اگر نداریم ، متغیر has_crate را بر روی شاخص crate sprite در لیست تنظیم می کنیم. سپس در بلوک به روز رسانی بازی ، آن Sprite را با Sprite بازیکن حرکت می دهیم و اگر دکمه A فشار داده شود ، سرعت vx جعبه را به 1200 یا -1200 (بسته به جهت حرکت شخصیت) تغییر می دهیم. همچنین متغیر has_crate را مجدداً روی -1 تنظیم کرده و نوع اسپریت جعبه ای را که همین حالا به هوا پرتاب شده است به Projectile تغییر می دهیم.

سرانجام ، ما نیاز داریم که جعبه ها در هنگام پرتاب دشمنان را واقعاً نابود کنند (اما نه هنگامی که دشمنان به طور تصادفی در یک جعبه قرار می گیرند! به همین دلیل ما جعبه ها را برای تایپ غذا و تغییر آن به Projectile فقط در هنگام پرتاب) و در هنگام ضربه خود تخریب می کنیم. دیوار. ما از دیگری در sprite of kind Projectile همپوشانی داریم با otherSprite of kind Enemy block برای آن - در این صورت هر دو اسپریت را از بین می بریم و امتیاز را یک به یک افزایش می دهیم. اگر پرتابه به دیوار برخورد کند ، اسپریت آن را از بین می بریم.

تقریباً اکنون تمام شده است! بازی در حال حاضر قابل پخش است ، اما هنوز هیچ چالشی وجود ندارد - فقط در یک سطح و نسبتاً ساده. ما می توانیم سطوح بیشتری را با دست بسازیم یا الگوریتمی بنویسیم که این سطوح را به طور خودکار برای ما ایجاد کند - اگرچه آنها به زیبایی سطوح ساخته شده توسط انسان نیستند.

مرحله 4: ماجراهای بی نهایت

ماجراهای بی نهایت
ماجراهای بی نهایت
ماجراهای بی نهایت
ماجراهای بی نهایت
ماجراهای بی نهایت
ماجراهای بی نهایت

عملکرد برای تولید سطوح تصادفی در ابتدا کمی ترسناک به نظر می رسد ، اما در واقع یک سری ساده از مراحل برای ایجاد سطح جدید به صورت الگوریتمی است ، به گونه ای که سطح جدیدی برای شخصیت های قابل بازی قابل قبول است. اول ، ما مراقبت می کنیم که شخصیت خود را به آن سطح جدید برسانیم - با استفاده از همپوشانی اسپریت نوع … در محل - ما از کاشی درب پورتال به عنوان محرک سطح جدیدی استفاده می کنیم. در تابع generate_level ما متغیرهای سطر ، کل و شانس را مقداردهی اولیه می کنیم. همچنین ما یک نقشه کاشی جدید ، با اندازه قبلی ، اما خالی ایجاد می کنیم. در اینجا یک هشدار کوچک وجود دارد - برای استفاده از مجموعه … در ردیف کاشی … ردیف … بلوک ، نقشه کاشی باید دارای این کاشی های خاص باشد --- این کمی بصری است و شاید یک اشکال در Makecode باشد. بنابراین ، آنچه شما باید انجام دهید این است که یک نقشه کاشی ایجاد کنید ، همه انواع کاشی را که می خواهید استفاده کنید به صورت تصادفی قرار دهید و سپس آنها را پاک کنید.

اولین کاشی (0x6) و پخش کننده را به صورت دستی روی آن قرار می دهیم. سپس مرحله بعدی را 30 بار تکرار می کنیم - مرحله بعدی مجموعه ای ساده از بررسی های درست -نادرست است که در مورد اینکه آیا ستون بعدی ما 1) همان سطح قبلی 2) یک بالا یا 3) یک پایین است تصمیم می گیریم. همچنین احتمال بسیار کمی وجود دارد که کاشی بعدی کاشی گدازه باشد - ما تعداد زیادی از اینها را نمی خواهیم! بعد از هر کاشی تولید شده ، فضای زیر آن را با گدازه پر می کنیم - فقط به خاطر زیبایی. به عنوان آخرین مرحله ، دشمنان و جعبه ها را اضافه کرده و آنها را در بالای کاشی های تخم ریزی تصادفی قرار می دهیم.

مرحله 5: ماجراجویی آغاز می شود

ماجراجویی آغاز می شود
ماجراجویی آغاز می شود

وویلا! ما platformer خود را به پایان رساندیم و قهرمان ما می تواند به یک ماجراجویی بی نهایت بپردازد ، خفاش ها را شکست دهد و جعبه ها را نابود کند. اگر با مشکل روبرو هستید ، می توانید کد را از مخزن GitHub ما بارگیری کنید.

این فقط یک نقشه است و قطعاً پیشرفت هایی وجود دارد که می توان انجام داد ، برای مثال انواع مختلف دشمنان ، پاداش ها ، تولید سطح بهتر و غیره. اگر نسخه بهبود یافته بازی را ساختید ، آن را در نظرات زیر به اشتراک بگذارید! برای کسب اطلاعات بیشتر در مورد GameGo و سایر سخت افزارهای سازندگان و مربیان STEM ، از وب سایت ما ، https://tinkergen.com/ دیدن کنید و در خبرنامه ما مشترک شوید.

TinkerGen یک کمپین Kickstarter برای MARK (Make A Robot Kit) ایجاد کرده است ، یک کیت روبات برای آموزش برنامه نویسی ، رباتیک ، AI!

توصیه شده: