Mundarija:

GameGo -da Makecode Arcade bilan Battle City remake: 4 qadam (rasmlar bilan)
GameGo -da Makecode Arcade bilan Battle City remake: 4 qadam (rasmlar bilan)

Video: GameGo -da Makecode Arcade bilan Battle City remake: 4 qadam (rasmlar bilan)

Video: GameGo -da Makecode Arcade bilan Battle City remake: 4 qadam (rasmlar bilan)
Video: GameGo handheld programmable console feat Microsoft makecode from game consumer to game developer , 2024, Noyabr
Anonim
Image
Image

GameGo - bu TinkerGen STEM ta'limi tomonidan ishlab chiqilgan, Microsoft Makecode -ga mos keladigan retro o'yinli portativ konsoli. U STM32F401RET6 ARM Cortex M4 chipiga asoslangan va STEM o'qituvchilari yoki retro video o'yinlar yaratishni yaxshi ko'radigan odamlar uchun mo'ljallangan. Siz ushbu qo'llanmani kuzatib, o'yinni Makecode Arcade simulyatorida sinab ko'rishingiz va keyin GameGo -da ishga tushirishingiz mumkin.

Ushbu maqolada biz 1985 yilda Namco tomonidan Nintendo Entertainment System (NES) uchun ishlab chiqarilgan va chop etilgan klassik Battle City tank otishni o'rganish o'yinini qayta yaratishga harakat qilamiz. Asl o'yinda o'yinchi tankni boshqaradi va dushman tanklarini yo'q qilish uchun o'q otadi. Dushman tanklari o'yinchining bazasini ham, o'yinchining tankini ham yo'q qilishga urinadi. Biz GameGo bilan blokirovka qilish dasturlarini yaxshiroq moslashtirish uchun o'yin o'yiniga biroz o'zgartirish kiritamiz, lekin bizning remeyk hali ham asl o'yinga o'xshashligini saqlab qoladi. Boshlaylik!

Ta'minotlar

GameGo

1 -qadam: Bizning Alter -ego - sariq tank

Bizning Alter -ego - sariq tank
Bizning Alter -ego - sariq tank

Https://arcade.makecode.com/ saytida Makecode Arcade -ni oching va yangi loyihani bosing. Biz alter-egoimizni sariq tankga aylantira boshlaymiz. O'rnatish uchun mySprite -ni tanlang, bu bizning asosiy sprite -ga o'xshab, yuqoriga qaragan sariq tankni chizamiz, bu blokni boshlang'ich blokiga joylashtiring. Move mySprite -ni tugmalar bloki bilan qo'shing. Endi bizda simulyatsiyada tugmalar yordamida harakatlanadigan tank bor! Ajoyib, lekin u har doim bir tomonga qaraydi, hatto biz pastga yoki yon tomonga harakat qilsak ham …

Buni to'g'rilash uchun har bir yo'nalish tugmachasiga bittadan to'rtta blok qo'shamiz, yo'nalish deb nomlangan yangi o'zgaruvchini yarating - biz tankimizning harakatlanish yo'nalishini saqlaymiz, 100 pastga, 100 ga yuqoriga to'g'ri keladi, O'ng uchun 200 va chap uchun -200. Nega bu raqamlar? Siz ko'rasiz, biz o'q otadigan raketalarni qo'shganimizda, bizning tankimiz o'qqa tutiladi. Ushbu bloklarning har to'rttasida mantiq juda oddiy - biz yangi yo'nalish (tugmachalarni bosishdan) oldingi yo'nalish bilan bir xilligini tekshiramiz. Agar shunday bo'lsa, biz asosan hech qanday o'zgarish qilmaymiz. Agar shunday bo'lmasa, biz tankning spritesini o'zgartiramiz, agar past va chapga burilsak, qo'shimcha sprite chizilmasligi uchun tasvirni aylantiramiz. Nihoyat, yo'nalishning boshlang'ich qiymatini -100 ga (tank yuqoriga) belgilaymiz, chunki bizning tankimiz o'yinni shunday boshlaydi. Sariq tankni hozir harakat qilib ko'ring, sprite harakat yo'nalishiga qarab o'zgaradi! Ajoyib, endi o'qlarni qo'shamiz.

Biz vx vy tezlik bilan mySprite -dan o'qqa tutilgan o'q bilan o'q otamiz (bu sprite uchun kichik kumush kvadrat chizamiz). A tugmachasi bosilgan blokda biz sariq tank chapdan/o'ngdan yuqoriga/pastga qaraganligini ko'rish uchun yo'nalishning mutlaq qiymatini tekshirishimiz kerak. Keyin biz o'qni yo'nalishning o'zgaruvchan tezligi bilan o'qqa tutishni davom ettiramiz -shuning uchun biz yo'nalish qiymatlari uchun -100/100/-200/200 ga ega bo'ldik.

Endi bizda raketalarni o'qqa tutadigan va harakatlanadigan sariq tank bor. Agar sariq simulyatsiya qilingan tanklar o'zlarini his qila olsalar, bu bo'shliqda dushmanlarsiz va qiladigan ishsiz yolg'izlikni his qilishlari aniq edi. Shunday qilib, keyingi qadam uchun vaqt o'tishi uchun dushman qo'shamiz.

2 -qadam: Dushmanlarni chiqaring

Dushmanlarni chiqaring
Dushmanlarni chiqaring
Dushmanlarni chiqaring
Dushmanlarni chiqaring

Biz bu qadamni ko'plab yangi o'zgaruvchilarni yaratish bilan boshlaymiz: ikkita massiv (biri dushman spritlarini ushlab turish uchun, ikkinchisi dushman yo'nalishlarini ushlab turish uchun), tugunlar orasidagi vaqtni saqlash uchun vaqt o'zgaruvchanligi, dushmanlarning maksimal sonini saqlash uchun dushman soni. xuddi shu paytni o'zida. Biz, shuningdek, boshlang'ich blokiga o'q otadigan ikkita raketa (raketa va dushman o'qi) qo'shamiz - bu bizga keyinchalik xatolikka yo'l qo'ymaslikka yordam beradi.

Keyin biz har bir o'yin yangilanishini yaratamiz … ms bloki, u erda spawn_time o'zgaruvchisini joylashtiring. Blok ichidagi mantiq oddiy - agar jang maydonidagi dushmanlarning umumiy soni dushmanlarning ruxsat etilgan sonidan kam bo'lsa, dushman_sprite_listga dushman qo'shing va qo'shing. Bu dushman uchun 200 (to'g'ri) yo'nalish.

Keyin, yaratilgan dushman blokidagi sprite -ga biz bir nechta grafik effektlarni qo'shamiz, uni tasodifiy bo'sh plitkaga joylashtiramiz va bu sprite uchun pick_direction funktsiyasini chaqiramiz. "Dushman" devorga urilganda, biz xuddi shu funktsiyani pick_direction deb ataymiz.

Bu funksiyada nima bor? Bu erda ishlar biroz murakkablasha boshlaydi, shuning uchun ushlab turing. Dushman tankining ko'tarilishining 50 foizi va uning 50 foizi tushishi ehtimoli bor - biz shunga mos ravishda spritni o'zgartiramiz. Bu erda bitta hiyla shundaki, biz dushman_directions_listidagi dushman tankiga mos keladigan qiymatni yangi yo'nalishga o'zgartirishimiz kerak, shuning uchun biz o'qlarni to'g'ri yo'nalishda o'qqa tutamiz. Buning uchun biz dushman sprite indeksini dushman_sprite_listidan topamiz va dushman yo'nalishlari ro'yxatida bu qiymatni o'zgartiramiz.

Nihoyat, o'q otishni qo'shamiz. Biz har 500 milodiy blokda o'yin yangilanishiga boshqasini qo'shamiz va dushman_sprite_listiga element qo'yamiz. 30% tasodif bilan dushman spriti o'z yo'nalishi bo'yicha dushman raketasini o'qqa tutadi.

Agar biz hozir simulyatsiyada o'yinni boshlasak, bizning sariq tankimiz va dushman tanklarimiz o'sha nuqtada paydo bo'lganini va bo'sh joyga borayotganini ko'rishimiz mumkin. Biz otishimiz mumkin va ular bizning sariq tankimizni otishi mumkin, lekin hech narsa bo'lmaydi. Hali ham ma'nosiz qolganday tuyuladi:) Keling, oxirgi qadam sifatida bezak va o'yin mexanikasini qo'shamiz.

3 -qadam: O'yin 42

O'yinning 42 -qismi
O'yinning 42 -qismi
O'yinning 42 -qismi
O'yinning 42 -qismi
O'yinning 42 -qismi
O'yinning 42 -qismi

Biz bu qadamni "Ma'lumotlar" yorlig'idan hayot va ball qo'shib, hayotni 10 va nolga qo'yishdan boshlaymiz. Keyin biz blokli plitkalar xaritasini qo'shamiz … Fayl xaritasini chizib, yuqoridagi skrinshotda ko'rib turganingizdek ko'ring. Devorlarni qo'shishni unutmang!

Keling, "Sprite" turini bir -birining ustiga qo'yamiz, boshqa turdagi o'yinchi - bu dushmanning o'qlari bizning sariq tankimizga tegdi. Biz bu raketalar bizniki emas, balki dushman o'qlari ekanligiga ishonch hosil qilishimiz kerak, shuning uchun biz qo'shamiz, agar blok ichidagi shart va agar u to'g'ri deb baholansa, unda biz hayot hisobidan birini olib tashlaymiz. Xuddi shunday, boshqa turdagi sprite turidagi boshqa snaryadlar boshqa turdagi dushman bilan bir -biriga to'g'ri keladi, biz o'qning sariq tankdan yasalgan o'q ekanligiga ishonch hosil qilamiz va agar bu holat rost deb baholansa, biz boshqa Spprite (dushman tanki) ni yo'q qilamiz, uni ro'yxatdan o'chirib tashlaymiz. dushman_sprite_list va ball qo'shish uchun bittasini qo'shing.

Oxirgi narsa - g'alaba va mag'lubiyat shartlari - g'alaba uchun biz abadiy blokda ball yuqori yoki 10 ga tengligini tekshirib ko'ramiz. Agar shunday bo'lsa, biz g'alaba ekranini ko'rsatamiz. Va nol blokda biz "O'yin tugashi" ekranini ko'rsatamiz.

O'yin kutilganidek ishlayotganini bilish uchun simulyatsiyada sinab ko'ring. Keyin uni GameGo -ga yuklang va dushman tanklarini maydalashdan zavqlaning!

4 -qadam: cheksiz o'yin va yaxshilanishlar

Cheksiz o'yin va yaxshilanishlar
Cheksiz o'yin va yaxshilanishlar

Bizning GitHub omborida siz Makecode arcade uchun ikkita faylni yuklab olishingiz mumkin - bittasi siz ko'rsatmaga amal qilganingizda, ikkinchisi esa tasodifiy darajadagi progressiyaga ega bo'lgan yangilangan versiyada bo'ladi. U 10 darajaga ega, ularning har biri tasodifiy hosil qilingan, har bir keyingi bosqichda dushmanlar soni ko'paygan.

Va, albatta, siz yoki sizning o'quvchilaringiz o'yinga qo'shishingiz mumkin bo'lgan yana ko'p narsalar bor! Bu erda yaxshiroq musiqa, buziladigan devorlar, g'alabaning turli shartlari va boshqalar!

Agar siz o'yinning takomillashtirilgan versiyasini yaratgan bo'lsangiz, uni quyidagi izohlarda baham ko'ring! GameGo va ishlab chiqaruvchilar va STEM o'qituvchilari uchun boshqa uskunalar haqida ko'proq ma'lumot olish uchun bizning veb -saytimizga tashrif buyuring, https://tinkergen.com/ va bizning blogimizga obuna bo'ling.

TinkerGen kodlash, robototexnika, AIni o'rgatish uchun robot to'plami bo'lgan MARK (Make A Robot Kit) uchun Kickstarter kampaniyasini boshladi.

Tavsiya: