Mündəricat:

GameGo -da Makecode Arcade ilə Battle City Remake: 4 Addım (Şəkillərlə)
GameGo -da Makecode Arcade ilə Battle City Remake: 4 Addım (Şəkillərlə)

Video: GameGo -da Makecode Arcade ilə Battle City Remake: 4 Addım (Şəkillərlə)

Video: GameGo -da Makecode Arcade ilə Battle City Remake: 4 Addım (Şəkillərlə)
Video: GameGo handheld programmable console feat Microsoft makecode from game consumer to game developer , 2024, Noyabr
Anonim
Image
Image

GameGo, TinkerGen STEM təhsili tərəfindən hazırlanmış Microsoft Makecode uyğun retro oyun portativ konsoludur. STM32F401RET6 ARM Cortex M4 çipinə əsaslanır və STEM müəllimləri və ya retro video oyunları yaratmaqdan zövq alan insanlar üçün hazırlanmışdır. Bu təlimatı izləyə və oyunu Makecode Arcade simulatorunda sınayaraq GameGo -da işlədə bilərsiniz.

Bu yazıda, əslində 1985 -ci ildə Nintendo Entertainment System (NES) üçün Namco tərəfindən istehsal edilən və nəşr olunan klassik bir Battle City tank atıcı oyununu yenidən yaratmağa çalışacağıq. Orijinal oyunda oyunçu bir tanka nəzarət edir və düşmən tanklarını məhv etmək üçün mərmi atır. Düşmən tankları oyunçunun bazasını və oyunçunun tankını məhv etməyə çalışır. GameGo ilə blok proqramlaşdırma təcrübələrini daha yaxşı uyğunlaşdırmaq üçün oyunda bəzi dəyişikliklər edəcəyik, lakin remeykimiz hələ də orijinal oyuna çox oxşarlığını qoruyacaq. Başlayaq!

Təchizat

GameGo

Addım 1: Alter -eqomuz - Sarı Tank

Bizim Alter -ego - Sarı Tank
Bizim Alter -ego - Sarı Tank

Https://arcade.makecode.com/ ünvanında Makecode Arcade açın və yeni layihəni vurun. Alter-eqomuzu sarı tanka çevirməyə başlayacağıq. Bir növ oyunçu blokundan sprite etmək üçün Set mySprite seçin və başlanğıc spritimiz olaraq yuxarıya baxan sarı bir tank çəkin, bu blokun başlanğıc blokunun içinə qoyun. Düymələr bloku ilə Move mySprite əlavə edin. İndi simulyasiya düymələri ilə hərəkət edə biləcəyimiz bir tankımız var! Əla, amma aşağı və ya yan tərəfə hərəkət etsək də həmişə eyni istiqamətə baxır …

Bunu düzəltmək üçün hər bir istiqamət düyməsinə bir dənə əlavə dörd blok əlavə edək. İstiqamət adlandırılan yeni bir dəyişən yaradın - tankımızın hərəkət istiqamətini saxlayacağıq, 100 aşağıya, -100 yuxarıya uyğun olacaq, Sağ üçün 200, sol üçün -200. Niyə bu rəqəmlər? Tankımızın atacağı mərmiləri əlavə etdikdə sonra görəcəksiniz. Bu blokların hər dördündəki məntiq çox sadədir - yeni istiqamətin (düyməni basmaqla) əvvəlki istiqamətlə eyni olub olmadığını yoxlayırıq. Əgər belədirsə, əsasən heç bir dəyişiklik etmirik. Əks təqdirdə, tankın spritesini dəyişdiririk və aşağı və sol istiqamətdə əlavə sprite çəkməmək üçün şəklin əksinə çeviririk. Nəhayət, istiqamətin başlanğıc dəyərini -100 (tank yuxarıya) təyin edək, çünki tankımız oyuna belə başlayır. Sarı tankı indi hərəkət etdirməyə çalışın, sprite hərəkət istiqamətinə görə dəyişəcək! Əla, indi güllə əlavə edək.

Vx vy sürətləri ilə mySprite -dən mərmiyə mərmi ilə güllə atacağıq (bu sprite üçün kiçik gümüş kvadrat çəkin). Açılmış düymənin içərisində, sıxılmış bir blokun içərisində, sarı tankın sola/sağa yuxarı/aşağı baxdığını görmək üçün istiqamətin mütləq dəyərini yoxlamaq lazımdır. Daha sonra istiqamət dəyişəninin sürəti ilə mərmi atmağa davam edirik -bu səbəbdən istiqamət dəyərləri üçün -100/100/-200/200 -ə sahib olduq.

İndi mərmi atıb hərəkət edə bilən sarı tankımız var. Sarı simulyasiya edilmiş tanklar hiss edə bilsəydilər, şübhəsiz ki, düşmənləri və görüləcək işləri olmayan bu boşluqda tənhalıq hiss edərdilər. Beləliklə, növbəti addımı atmaq üçün düşmənlər əlavə edək ki, vaxt keçsin.

Addım 2: Düşmənləri çıxarın

Düşmənləri çıxarın
Düşmənləri çıxarın
Düşmənləri çıxarın
Düşmənləri çıxarın

Bu addıma bir çox yeni dəyişən yaratmaqla başlayacağıq: iki sıra (biri düşmən spritesini tutmaq üçün, digəri düşmən istiqamətlərini tutmaq üçün), kürülər arasındakı vaxtın saxlanması üçün kürü vaxt dəyişənliyi, maksimum düşmən sayını saxlamaq üçün düşmən sayı. eyni vaxtda. Başlanğıc blokuna atəş açan iki mərmi (mərmi və düşmən mərmi) əlavə edəcəyik - bu, sonradan səhv etməməyimizə kömək edəcək.

Sonra oyun yeniləməsində hər… ms bloku yaradırıq, orada spawn_time dəyişənini daxil edirik. Blokun içərisindəki məntiq sadədir - əgər döyüş meydanındakı düşmənlərin ümumi sayı düşmən sayından icazə veriləndən azdırsa, düşmən_sprite_listinə düşmən əlavə edin və əlavə edin. Bu düşmən üçün 200 (sağa doğru) istiqamət.

Bundan sonra, yaradılan növ Düşmən blokunda bir neçə qrafik effekt əlavə edirik, təsadüfi boş bir kafelə yerləşdiririk və bu sprite üçün pick_direction funksiyasını çağırırıq. Düşmənin divara vurduğu növlərdə eyni funksiyaya pick_direction deyirik.

Bu funksiyada nə var? İşlərin bir az mürəkkəbləşməyə başladığı yerdir. Düşmən tankının qalxma ehtimalı yüzdə 50, enmə də 50 faizdir - spriti buna uyğun olaraq dəyişirik. Burada yeganə hiylə, düşmən_yönümləri_listindəki düşmən tankına uyğun olan dəyəri yeni istiqamətə dəyişməyimizdir, ona görə də güllələri düzgün istiqamətdə atəşə tutmalıyıq. Bunun üçün düşmən sprite indeksini dushman_sprite_list -də tapırıq və düşmən_yönümləri siyahısında həmin maddənin dəyərini dəyişirik.

Nəhayət, atəş açma əlavə edək. Hər 500 ms blokda bir oyun yeniləməsi əlavə edirik və düşmən_sprite_listinə bir maddə qoyuruq. 30% şansla bir düşmən sprite, hərəkət istiqamətində düşmən mərmisini atəşə tutur.

Oyuna simulyasiya ilə başladıqda, sarı tankımızın və düşmən tanklarımızın eyni nöqtədə göründüyünü və boş yerə getdiyini görə bilərik. Biz sarı tankımızı vura bilərik, amma onlar heç nə etməyəcək. Hələ də mənadan çox məhrumdur:) Son addım olaraq bəzəkləri və oyun mexanikasını əlavə edək.

Addım 3: 42 Oyunun

Oyunun 42 -si
Oyunun 42 -si
Oyunun 42 -si
Oyunun 42 -si
Oyunun 42 -si
Oyunun 42 -si

Məlumat sekmesinden həyat və hesab əlavə edərək həyatı 10 -a və sıfıra vuraraq bu addıma başlayacağıq. Sonra blok dəsti plitələr xəritəsini əlavə edirik … Yuxarıdakı ekran görüntüsündə gördüyünüz kimi görünmək üçün fayl xəritəsini çəkin. Divarları əlavə etməyi unutmayın!

Mərminin digər növləri ilə üst -üstə düşən mərmi növlərini əlavə edək - düşmənin güllələri sarı tankımıza dəydiyi vaxt. Bu mərmilərin özümüzün deyil, düşmənin güllələri olduğundan əmin olmalıyıq, buna görə də əlavə edəcəyik ki, blok daxilindəki şərt və Doğru olaraq qiymətləndirilirsə, həyat sayından birini çıxarırıq. Eynilə, digər növ Sprite növündə bir mərmi digər növün Düşməni ilə üst -üstə düşür, mərminin sarı tankdan bir mərmi olduğuna əmin oluruq və bu şərt doğru olaraq qiymətləndirilərsə, digərSprite'i (düşmən tankını) məhv edirik, onu siyahıdan çıxarırıq. düşmən_sprit_listindən və vurmaq üçün birini əlavə edin.

Sonuncu şey qələbə və məğlubiyyət şərtləridir - qələbə üçün əbədi blokda hesabın daha yüksək və ya 10 -a bərabər olub olmadığını yoxlayacağıq. Əgər belədirsə, onda qələbə ekranını göstəririk. Və həyatda sıfır blokda Game Over ekranını göstəririk.

Oyunun gözlənildiyi kimi işlədiyini görmək üçün simulyasiyada sınayın. Sonra GameGo -ya yükləyin və düşmən tanklarını əzməkdən zövq alın!

Addım 4: Sonsuz Oyun və Təkmilləşdirmələr

Sonsuz Oyun və Təkmilləşdirmələr
Sonsuz Oyun və Təkmilləşdirmələr

GitHub depomuzda Makecode arcade üçün iki fayl yükləyə bilərsiniz - biri bu təlimatı izləsəniz, digəri təsadüfi səviyyəli irəliləyişə malik təkmilləşdirilmiş versiyadırsa əldə etdiyiniz kimidir. 10 səviyyəyə malikdir, hər biri təsadüfi olaraq hər ardıcıl səviyyədə düşmən sayının artması ilə yaradılır.

Əlbəttə ki, sizin və ya şagirdlərinizin oyuna əlavə edə biləcəyi daha çox şey var! Daha yaxşı musiqi, qırılan divarlar, fərqli qələbə şərtləri və s.

Oyunun təkmilləşdirilmiş bir versiyasını edirsinizsə, aşağıdakı şərhlərdə paylaşın! GameGo və istehsalçılar və STEM müəllimləri üçün digər avadanlıqlar haqqında daha çox məlumat üçün https://tinkergen.com/ saytımızı ziyarət edin və blogumuza abunə olun.

TinkerGen, kodlaşdırma, robototexnika, AI öyrətmək üçün bir robot dəsti olan MARK (Make a Robot Kit) üçün Kickstarter kampaniyasına başladı.

Tövsiyə: