Mündəricat:

(Multiplayer) Makecode Arcade ilə GameGo -da mübarizə: 6 addım
(Multiplayer) Makecode Arcade ilə GameGo -da mübarizə: 6 addım

Video: (Multiplayer) Makecode Arcade ilə GameGo -da mübarizə: 6 addım

Video: (Multiplayer) Makecode Arcade ilə GameGo -da mübarizə: 6 addım
Video: Normal People VS Programmers #coding #python #programming #easy #funny #short 2024, Noyabr
Anonim

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əyib oyunu Makecode Arcade simulyatorunda sınayaraq GameGo -da işlədə bilərsiniz.

Bir platformer oyunu və Battle City Remake hazırlamaq üzərində əlimizi sınamadan əvvəl dərc etdiyimiz məqalələrdə. Bu dəfə iki GameGo'yu bir araya gətirmək və oyunçuların çox oyunçu döyüş oyununda üstünlük üçün mübarizə aparmaq üçün Jacdac interfeysindən istifadə etmək istədim. Təəssüf ki, Jacdac multiplayer üçün blok proqramlaşdırmasının beta mərhələsində olduğunu və bəzi səhvləri olduğunu öyrəndim - hələ də sadə oyunlar etmək mümkündür, amma döyüş oyunum üçün heç bir şans yoxdur. Beləliklə, bu təlimatda oyunun üç versiyasını dərc edirəm (buna "Cthulhu Combat" adını verdim:))

- sadə AI rəqibi olan tək oyunçu versiyası

- Arcade simulyasiyasında oynamaq üçün çox oyunçu versiyası

- Jacdac ilə çox oyunçu versiyası (yarımçıq, daha sonra yenilənəcək)

Təchizat

GameGo

Microsoft Makecode Arcade

Addım 1: Başlat və Round_setup Funksiyalarında

Başlanğıc və Round_setup Funksiyalarında
Başlanğıc və Round_setup Funksiyalarında

Bir oyunçunun oyununun kodlaşdırılmasını ətraflı təsvir edəcəyəm və sonrakı addımlarda bunun necə ediləcəyini müzakirə edəcəyik

a) çox oyunçu simulyatoru

b) Jacdac çox oyunçu.

Kafel xəritəsini qaranlıq zindana qoyaraq və oyunçu və AI botu üçün sprite yaratmağa başlayırıq - hər ikisi də Oyunçu növünə aid olacaq. Y -ox sürətini 600 -ə qoyduq - atladıqdan sonra uçmayacaqlar. Round_setup funksiyasına zəng etmədən əvvəl mərmi botdan və oyunçudan da işə salırıq. round_setup funksiyası bizim üçün yeni dəyirmi hazırlıq işini görür - bunu bir funksiya etməyimizin səbəbi oyunda cəmi 3 tur ola biləcəyi və eyni kodu təkrarlamamaq istədiyimizdir. Bu funksiyada əvvəlcə oyunçulardan birinin 2 qələbə qazandığını yoxlayırıq - əgər bu şərt Doğru olaraq qiymətləndirilirsə, oyun bitdi. Hər iki oyunçunun ikidən az qələbəsi varsa, round_num dəyişənini bir artırırıq və oyunçuları başlanğıc nöqtələrinə yerləşdiririk, həyatlarını 100 -ə çatdırırıq və yeni bir turun başladığını elan edirik.

Addım 2: Oyun axını

Oyun axını
Oyun axını

Bu oyunda dünyanın özü statikdir və oyun axını oyunçuların hərəkətlərinə bağlıdır. Dörd blokda, oyun qaydalarının çoxunu təyin edirik, bu bloklar bunlardır: yuxarı düyməsinə basıldı, aşağı düyməsinə basıldı, A düyməsinə basıldı və B düyməsinə basıldı. Bu blokların hər birinə nəzər salaq.

yuxarı düyməsinə basıldıqda - ikiqat atlama məntiqi. Atlama düyməsini 3 dəfədən az basmışıqsa, oyunçunun sürətini - 140 (yuxarıya doğru) olaraq təyin edirik. Oyunçumuz 600 -ə qədər sürətlənməyə malikdir, buna görə də atladığımız zaman sürətimiz sürətlə azalacaq. 0 -a çatdıqda (şaquli oxda hərəkət etmədən) yenidən jump_countu 0 olaraq təyin edirik.

aşağı düyməsinə basıldı - hücum qalxanı məntiqi. Aşağı düyməyə basıldığı təqdirdə oyunçu imicini "qalxanlı" olaraq dəyişir və ekranlı dəyişəni 1 olaraq təyin edir.

A düyməsinə basıldıqda - mərmi atın. Bu olduqca özünü izah edən bir şeydir.

B düyməsinə basıldıqda - tətbiqdə qalxana bənzəyən yaxın döyüş.

Oyunçuların spritlərinin və onların qorunan/hücum edən dəyişənlərinin görüntülərini hər 500 ms -də 0 -a təyin edirik. Hər bir hərəkət üçün müstəqil taymerlər təyin edə bilərdik, amma sadəlik naminə yalnız əsas oyun yeniləmə döngəsindən istifadə edəcəyik.

Buradakı qazanma şərtləri olduqca asandır - oyunçu həyatı 0 -a çatdıqda, digər oyunçu turu qazandı, sonra oyunçunun qalibiyyət sayını dəyişən olaraq saxlayırıq.

Nəhayət, dəyişən hücum ziyanını və yaxın döyüş hücumunu idarə edən iki blok var. Hər birində sprite toqquşmasını yoxlayırıq və hücum edən oyunçu üçün qorunan/hücum dəyişən 0/1 olaraq təyin olunur.

Addım 3: Oyun 1: AI Rəqibi

Oyun 1: AI Rəqibi
Oyun 1: AI Rəqibi

İlk oyunda ikinci oyunçu olmaq üçün nisbətən sadə bir AI rəqibi yaradacağıq. Hər 200 ms -də oyun yeniləməsi içərisində əvvəlcə oyunçu ilə AI arasındakı məsafə yoxlamasını aparırıq - 20 -dən az olarsa, yaxınlaşma hücum şansını 30 -a və hücum şansı 30 -a qaldıraraq AI -ni yaxın döyüş rejiminə qoyduq. Məsafə daha yüksəkdirsə 20 -dən çox yaxınlaşma hücumu şansını sıfıra qoyduq (yaxınlaşma hücumunda pint yoxdur, oyunçu çox uzaqda olduğu üçün) və şansını 70 -ə köçürdük. Əməliyyat şansı dəyişənləri təyin edildikdən sonra, bu hərəkətləri göstərilən şanslarla icra etməyə davam edirik. Özünüz bu sadə AI -yə qarşı oynamağa cəhd etsəniz, davranışının çox sadə olmasına baxmayaraq, ona qarşı qalib gəlməyin asan olmadığını görəcəksiniz - kompüter nəzarətində olan rəqiblər kimi, əksər hallarda saniyədə daha çox hərəkət edə biləcəyi üçün qalib gəlir. insan oyunçu.

Kodlaşdırarkən ilişib qalmısınızsa, bu layihə üçün bütün kodu GitHub depomuzda yükləyə və Makecode Arcade -də aça bilərsiniz.

Addım 4: Oyun 2: Çox Oyunçu Simulyatoru

Oyun 2: Çox Oyunçu Simulyatoru
Oyun 2: Çox Oyunçu Simulyatoru
Oyun 2: Çox Oyunçu Simulyatoru
Oyun 2: Çox Oyunçu Simulyatoru

Simulyasiyada iki oyunçu üçün oyun variantı tək oyunçu versiyasına çox oxşardır, ancaq AI davranış blokunu dörd oyunçu 2 düyməsinə basılan dörd blokla əvəz edirik - bu blokların içərisində eyni blokların məzmununu 1 oyunçu üçün əks etdirir. Hansı dəyişiklikləri etməli olduğunuzu daha yaxşı başa düşmək üçün ekran görüntüsünə baxın. Bundan başqa, başlanğıc funksiyasında düymələri olan hərəkət edən oyunçu 2 -ni əlavə etməliyik və iki oyunçunun son ekranını LOSE əvəzinə WIN -ə dəyişməliyik.

Addım 5: Oyun 3: Jacdac Multiplayer

Oyun 3: Jacdac Multiplayer
Oyun 3: Jacdac Multiplayer

Bu forum mövzusunda Makecode arcade blokları olan Jacdac çox oyunçusunun icma tətbiqini tapdım

forum.makecode.com/t/new-extension-real-mu…

Orada nümunə oyunu sınadım (Space Invaders) və çox yaxşı işlədiyini gördüm. Təəssüf ki, Cthulhu Combatın oyun mexanikası bir çox dəyişəndən istifadə edir və görünür ki, Real Multiplayer uzantıları hələ də dəyişənlərin sinxronizasiyasını dəstəkləmir - buna görə işə başladım, iki oyunçunun hərəkətləri cihazlar arasında sinxronlaşdırılır, amma həyat bunu edə bilməz. Rəqiblərin cihazına düşməyin. Həm də mərmi mexanikasında səhv bir şey var, mərmilər divara dəydikdən sonra yoxa çıxmır, bu da təxminən 10 mərmi atıldıqdan sonra oyunun əlaqəni kəsməsinə səbəb olur.

Bunu sınamaq üçün GitHub depomuzdan-p.webp

Addım 6: Cthulhu Mübarizəsi Başlasın

Cthulhu Mübarizəsi Başlasın!
Cthulhu Mübarizəsi Başlasın!

Sadə döyüş oyunumuzda hələ də bir çox irəliləyişlər edilə bilər - məsələn, daha mürəkkəb AI davranışı əlavə edə bilərsiniz və ya düymə birləşmələri və/və ya animasiya ardıcıllığı əlavə etmək üçün uzantıdan istifadə edə bilərsiniz. GameGo və Makecode Arcade ilə öz oyunlarınızı proqramlaşdırarkən uğurlar və əylənin.

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ə bülletenimizə abunə olun.

Tövsiyə: