Съдържание:

Платформер с безкрайни нива в GameGo с Makecode Arcade: 5 стъпки (със снимки)
Платформер с безкрайни нива в GameGo с Makecode Arcade: 5 стъпки (със снимки)

Видео: Платформер с безкрайни нива в GameGo с Makecode Arcade: 5 стъпки (със снимки)

Видео: Платформер с безкрайни нива в GameGo с Makecode Arcade: 5 стъпки (със снимки)
Видео: Новая классика ► Прохождение Bloodstained: Curse of the Moon 2024, Юли
Anonim
Image
Image

GameGo е съвместима с Microsoft Makecode ретро игрална преносима конзола, разработена от TinkerGen STEM образование. Той е базиран на чип STM32F401RET6 ARM Cortex M4 и е създаден за STEM преподаватели или просто хора, които обичат да се забавляват при създаването на ретро видео игри. Можете да следвате този урок и да изпробвате играта в Makecode Arcade simulator и след това да я стартирате на GameGo.

В тази статия ще направим игра на платформинг с безкрайни произволно генерирани нива. В платформер, управляваният от играча герой трябва да скача и да се изкачва между окачени платформи, като същевременно избягва препятствията. Средите често се отличават с неравен терен с различна височина, който трябва да бъде прекосен. Играчът често има някакъв контрол върху височината и разстоянието на скоковете, за да не позволи на героя си да падне до смърт или да пропусне необходимите скокове. Ще внедрим всички тези основни елементи и също така ще добавим персонализирана функция, която ще генерира нови нива, когато достигнем края на последното. Нека да започнем!

Консумативи

GameGo

Стъпка 1: Героят

Героят
Героят

Като първа стъпка ще създадем нашето алтер-его. Моите умения за рисуване са доста лоши, затова просто реших да използвам такъв от Галерията;) За разлика от предишната игра, която направихме, в този платформер нашият персонаж може да се движи само наляво и надясно, а също и да скача. Така че вместо да имаме два различни спрайта за главния герой, този път е достатъчен един - можем просто да обърнем изображението на спрайта, когато сменим посоката.

Първото нещо, което трябва да направите, е да добавите фон и карта с плочки. Избрах 32x8 дълга карта с плочки - за първото ниво ще я нарисуваме ръчно, както на екранна снимка 2. След това добавяме нашия играем герой със зададен mySprite към спрайт от вид Player Player и го поставяме в горната част на плочката 0-5. Също така настроихме камерата да се движи с характер за игра и контролираме нейното ляво и дясно движение - ще зададем скорост vy на движение на 0, тъй като нашият герой не трябва да може да се носи свободно по картата по посока y. Добавете два блока… натиснат бутон, един за левия бутон, един за десния. Когато натиснете левия бутон, ние проверяваме дали нашата посока е била „наляво“, преди да натиснем бутона. Ако беше така, просто продължаваме да вървим наляво. Ако не беше, трябва да обърнем спрайт изображението на нашия герой. Подобна логика за движение вдясно.

Засега всичко е наред, единственият проблем изглежда, че нашият герой не може да преодолее нито едно препятствие. Така че трябва да добавим и скокове. Ще наблюдаваме контролите за натискане на бутон нагоре и когато бъде открит, ще зададем променливото скачане на 1, ще отбележим времето за стартиране на прескачащите движения и ще зададем скоростта на спрайт vy на -200 (нагоре). След това след определен период от време, ние ще зададем скоростта на 200 (слизане), така че нашият герой да не изстреля към небето като ракета.

Мисля, че създадохме герой, достоен за предизвикателството сега! Е, къде е предизвикателството?

Стъпка 2: Враговете

Враговете
Враговете

Ще използваме структура от масиви, за да съхраняваме спрайтовете на враговете. За типа врагове ще вземем малък пряк път и ще използваме прилепи:), а не референция за коронавирус, просто прилепите могат да летят, затова няма да се налага да „симулираме“гравитацията за тях, както правим с нашия персонаж за игра. Използвайте върху създаден спрайт от вид вражески блок, за да поставите новосъздадените прилепи върху произволна плочка за хвърляне (маркирана с малка бяла маркировка) и задайте скоростта им на vx на -10 (бавно се движи надясно). След това в рамките на актуализацията на играта на всеки блок от 2000 мс преглеждаме всеки елемент от вражеския списък и на случаен принцип променяме посоката им, като същевременно прелистваме спрайтовете на прилепите, ако е необходимо (за да отразява промяната в посоката на движение). И накрая, добавяме спрайт от вид Player, който се припокрива с блока на други врагове от вида Enemy, където правим проста проверка дали играчът вече е бил ударен. Ако не беше, изваждаме един живот, задаваме флаг за хит на 1 (е ударен) и стартираме таймера. След като изтече 500 мс от последното попадение, ние сменяме флага обратно на 0. Правим това, за да може играчът да не загуби твърде много от ценните си животи след сблъсък с враг.

Нека проверим как се справяме. Е, сцената определено изглежда по -оживена с всички прилепи, които летят наоколо и хапят нашия играч. Сега имаме нужда от оръжие, за да вършим нашите героични дела!

Стъпка 3: Оръжието

Оръжието
Оръжието

За оръжието черпех вдъхновение от стара игра на Nintendo за двама братя бурундуци:) Нека добавим спрайтовете на щайгата към нивото, подобно на това, което правим с добавянето на враговете. Също така инициализираме променливата has_crate на -1, което показва, че нашият герой не носи щайга. В on sprite of kind Player се припокрива с otherSprite of kind Food блок, проверяваме дали вече държим щайга и ако не го правим, задаваме променливата has_crate към индекса на спрайта на щайгата в списъка. След това в блока за актуализиране на играта преместваме този спрайт заедно със спрайта на играча и ако е натиснат бутон А, променяме скоростта на vx на щайгата на 1200 или -1200 (в зависимост от посоката на движение на героя). Също така отново зададохме променливата has_crate на -1 и променихме типа спрайт на щайгата, който беше изстрелян във въздуха току -що на Projectile.

И накрая, трябва сандъците действително да унищожат враговете при изстрелването им (но не и когато враговете просто случайно се препънат в щайга! Затова присвоихме щайги за въвеждане на храна и го променихме на снаряд само при изстрелване) и самоунищожаване при удряне стената. За това използваме друг на вид спрайт, който се припокрива с блока на другия вид на врага - в този случай унищожаваме двата спрайта и повишаваме резултата с един. Ако снаряд удари стената, ние унищожаваме неговия спрайт.

Почти готово сега! Играта вече може да се играе, но едва ли има предизвикателство - само едно ниво и доста просто. Бихме могли да направим повече нива на ръка или да напишем алгоритъм, който да генерира тези нива автоматично за нас - въпреки че те няма да са толкова красиви, колкото нивата, създадени от човека, разбира се.

Стъпка 4: Безкрайни приключения

Безкрайни приключения
Безкрайни приключения
Безкрайни приключения
Безкрайни приключения
Безкрайни приключения
Безкрайни приключения

Функцията за генериране на произволно ниво изглежда малко страшна в началото, но това е наистина проста серия от стъпки за алгоритмично генериране на ново ниво, по начин, по който ново ниво е проходимо за играеми персонажи. Първо, ние се грижим за извеждането на нашия герой на това ново ниво - като използваме на вид спрайт припокривания на плейъра … на място - използваме плочките на порталната врата като спусък за ново ниво. Във функцията generated_level инициализираме променливи ред, колона и шанс. Също така създаваме нова карта с плочки, със същия размер като преди, но празна. Ето малко предупреждение обаче - за да се използва set … в ред на плочки … col … блок, картата с плочки трябва да има тези конкретни плочки --- това е малко контра интуитивно и може би грешка в Makecode. И така, това, което трябва да направите, е да създадете карта с плочки, да поставите всички типове плочки, които искате да използвате, в произволно генериране И след това да ги изтриете.

Ръчно поставяме първата плочка (0x6) и плейъра върху нея. След това повтаряме следващата стъпка 30 пъти - следващата стъпка е проста серия от проверки True -False, които решават дали следващата колона ще бъде 1) на същото ниво като предишните 2) едно нагоре или 3) едно надолу. Има и много малък шанс следващата плочка да бъде лава - не искаме твърде много от тях! След всяка генерирана плочка ние запълваме пространството под нея с лава - само за красота. Като последна стъпка добавяме враговете и щайгите и ги поставяме върху произволни плочки за хвърляне на хайвера.

Стъпка 5: Приключението започва

Приключението започва
Приключението започва

Вола! Завършихме нашия платформер и нашият герой може да отиде в безкрайно приключение, побеждавайки прилепите и унищожавайки каси. ако срещнете проблеми, можете да изтеглите кода от нашето хранилище на GitHub.

Това е просто план и определено има някои подобрения, които могат да бъдат направени, например различни видове врагове, бонуси, генериране на по -добро ниво и така нататък. Ако все пак направите подобрена версия на играта, споделете я в коментарите по -долу! За повече информация относно GameGo и друг хардуер за създатели и преподаватели по STEM посетете нашия уебсайт https://tinkergen.com/ и се абонирайте за нашия бюлетин.

TinkerGen създаде Kickstarter кампания за MARK (Make A Robot Kit), робот комплект за обучение на кодиране, роботика, AI!

Препоръчано: