Мазмуну:

Platformer Makecode Arcade менен GameGoдо чексиз деңгээлге ээ: 5 кадам (сүрөттөр менен)
Platformer Makecode Arcade менен GameGoдо чексиз деңгээлге ээ: 5 кадам (сүрөттөр менен)

Video: Platformer Makecode Arcade менен GameGoдо чексиз деңгээлге ээ: 5 кадам (сүрөттөр менен)

Video: Platformer Makecode Arcade менен GameGoдо чексиз деңгээлге ээ: 5 кадам (сүрөттөр менен)
Video: How to Make a Platformer Game [Part 1: Intro, sprites, movement & tile map] 2024, Июль
Anonim
Image
Image

GameGo TinkerGen STEM билим берүү тарабынан иштелип чыккан Microsoft Makecode шайкеш ретро оюн портативдик консолу. Бул STM32F401RET6 ARM Cortex M4 чипине негизделген жана STEM педагогдоруна же жөн эле ретро видео оюндарын түзүүнү жактырган адамдар үчүн жасалган. Бул окуу куралын ээрчип, оюнду Makecode Arcade симуляторунда сынап көрүп, андан кийин GameGoдо иштете аласыз.

Бул макалада биз чексиз туш келди деңгээлдерде платформер оюнун жасайбыз. Платформада оюнчу көзөмөлдөгөн каарман тоскоолдуктардан качып, асылып турган аянтчалардын ортосунда секирип, көтөрүлүшү керек. Айлана -чөйрө көбүнчө ар кандай бийиктиктеги тегиз эмес жерлерди камтыйт, аларды басып өтүү керек. Оюнчу көбүнчө секирүүнүн бийиктигин жана алыстыгын көзөмөлдөйт, алардын мүнөзүнүн өлүшүнө жол бербөө үчүн же керектүү секирүүлөрдү өткөрүп жибербөө үчүн. Биз бул негизги элементтердин бардыгын ишке ашырабыз, ошондой эле акыркы функциянын аягына жеткенде жаңы деңгээлдерди пайда кыла турган ыңгайлаштырылган функцияны кошобуз. Баштайлы!

Жабдуулар

GameGo

1 -кадам: Баатыр

Баатыр
Баатыр

Биринчи кадам катары биз альтер-эгобузду түзөбүз. Менин сүрөт тартуу жөндөмүм абдан начар, ошондуктан мен Галереядан бирөөнү колдонууну чечтим;) Биз жасаган мурунку оюндан айырмаланып, бул платформерде биздин ойноочу каарманыбыз солго жана оңго гана кыймылдай алат, ошондой эле секире алат. Ошентип, башкы каармандын эки башка спрайтына ээ болуунун ордуна, бул жолу бирөө жетиштүү - биз багытын өзгөрткөндө спрайттын сүрөтүн оодара алабыз.

Биринчи нерсе - фон жана плитканы кошуу. Мен 32x8 плитканын картасын тандап алдым - биринчи деңгээлде биз аны скриншот 2дегидей кол менен тартабыз. Биз ошондой эле камераны ойнотула турган мүнөз менен кыймылга келтирип, анын сол жана оң кыймылын көзөмөлдөйбүз - биз кыймылдын ылдамдыгын 0ге коебуз, анткени биздин мүнөз картада y -багыты боюнча эркин сүзө албашы керек. Күйгүзүлгөн эки блокту кошуңуз: бири сол баскычка, бири оңго. Сол баскыч басылганда, биз баскычты басуудан мурун биздин багыт "солго" болгонун текшеребиз. Эгер ошондой болсо, биз жөн гана солго кете беребиз. Эгер андай болбосо, анда биз каарманыбыздын спрайт имиджин бурушубуз керек. Туура кыймыл үчүн окшош логика.

Азырынча баары жакшы, бир гана көйгөй биздин каарман эч кандай тоскоолдукту жеңе албайт окшойт. Ошентип, биз секирүүнү кошушубуз керек. Биз баскычтарды басуу үчүн көзөмөлдү көзөмөлдөп турабыз жана ал аныкталганда, биз өзгөрмөлүү секирүүнү 1ге коебуз, убакыттын секирүү кыймылдарын белгилеп, каармандын сприт ылдамдыгын vy -200гө (жогору карай) коёбуз. Белгиленген убакыттан кийин, биз ылдамдыкты 200гө түшүрөбүз (ылдый түшөт), ошондуктан биздин каарман ракета катары асманга атпайт.

Менимче, биз азыр татыктуу баатырды жараттык! Ооба, кыйынчылык кайда?

2 -кадам: Душмандар

Душмандар
Душмандар

Биз душмандын спрайттарын сактоо үчүн массив түзүлүшүн колдонобуз. Душмандардын түрү үчүн биз бир аз жарлыкты колдонобуз жана жарганаттарды колдонобуз:) коронавирустун маалымдамасы эмес, жөн эле жарганаттар учуп кете алат, ошондуктан биздин ойноок мүнөзүбүздөгүдөй алар үчүн тартылуу күчүн "окшоштуруунун" кереги жок. Жаңыдан пайда болгон жарганаттарды кокустук плиткасына (кичине ак белги менен белгиленген) жайгаштыруу жана алардын vx ылдамдыгын -10го (акырындык менен оңго жылуу) коюу үчүн Enemy блок түрүнүн спрайтында колдонуңуз. Андан кийин оюн жаңыртуунун ар бир 2000 мс блокунда биз dush_listтин ар бир пунктун кайталайбыз жана алардын багытын туш келди өзгөртөбүз, ошол эле учурда керек болсо жарганаттардын спритин (кыймылдын багытынын өзгөрүшүн чагылдыруу үчүн) бурабыз. Акыр -аягы, биз башка түрдөгү Enemy блогу менен окшош Плеердин спрайтына кошулабыз, анда биз оюнчу буга чейин эле урулганын текшеребиз. Эгерде биз бир өмүрдү алып салбасак, хит желекти 1ге коюңуз (урулду) жана таймерди баштаңыз. Бир жолу 500 мс акыркы сокку убакыттан кийин биз желекти кайра 0ге өзгөртөбүз. Биз оюнчу душманыбыз менен кагылышуудан кийин анын кымбат өмүрүн жоготуп албашы үчүн жасайбыз.

Кандай экенибизди текшерип көрөлү. Ооба, сахна, албетте, бардык жарганаттар айланып учуп, биздин оюнчуну тиштеп, жандуу көрүнөт. Эми биздин баатырдык ишибизди аткаруу үчүн курал керек!

3 -кадам: Курал

Курал
Курал

Курал үчүн мен эски Nintendo оюнунан эки бурундук бир тууган жөнүндө илхам алчумун:) Келгиле, душмандарды кошуу менен окшоштурулган деңгээлдеги крейт спрайттарын кошолу. Биз ошондой эле has_crate өзгөрмөсүн -1ге баштайбыз, бул биздин мүнөзүбүздө куту жок экенин көрсөтүп турат. Ойноткучтун спрайтында, башка түрдөгү Food Blok менен бири -бирине дал келет, бизде кутуча барбы, жокпу, биз has_crate өзгөрмөсүн тизмедеги крат спрайтынын индексине коебуз. Андан кийин оюнду жаңыртуу блогунда биз ошол спрайтты оюнчунун спрайт менен кошо жылдырабыз жана эгер А кнопкасы басылса, биз кратанын vx ылдамдыгын 1200 же -1200гө алмаштырабыз (каармандын кыймылынын багытына жараша). Биз ошондой эле has_crate өзгөрмөсүн кайра -1ге коюп, азыр эле абага учурулган кутунун спрайтынын түрүн Projectile кылып өзгөрттүк.

Акырында, биз коробкаларды ишке киргизгенде душмандарды чындап жок кылышыбыз керек (бирок душмандар кокустуктан кокусунан чалынып кетишкенде эмес! Ошон үчүн биз тамак-аш терип, аны снарядга өзгөрткөндө гана орноттук) жана урганда өзүн өзү жок кылышыбыз керек. дубал. Биз башка спрайтта башка снаряддын башка Enpry блоктору менен кайчылашын колдонобуз - бул учурда биз спрайттарды жок кылабыз жана упайларды бирден көтөрөбүз. Эгерде снаряд дубалга тийсе, биз анын спрайтын жок кылабыз.

Дээрлик азыр бүттү! Оюн азыр ойнотууга болот, бирок эч кандай кыйынчылык жок - бир гана деңгээл жана бул абдан жөнөкөй. Биз кол менен көбүрөөк деңгээлдерди түзө алабыз же бул деңгээлдерди биз үчүн автоматтык түрдө түзө турган алгоритмди жаза алмакпыз, бирок алар, албетте, адам жараткан деңгээлдердей сулуу болбойт.

4 -кадам: Чексиз окуялар

Infinite Adventures
Infinite Adventures
Infinite Adventures
Infinite Adventures
Infinite Adventures
Infinite Adventures

Кокустук деңгээлдеги муун функциясы башында бир аз коркунучтуу көрүнөт, бирок чындыгында алгоритмдик түрдө жаңы деңгээлди түзүү үчүн жөнөкөй кадамдар тобу. Биринчиден, биз өзүбүздүн мүнөзүбүздү жаңы деңгээлге жеткирүү үчүн кам көрөбүз - спрейттин жардамы менен плеердин кайчылаштары … жайгашкан жерде - биз порталдын эшигинин плиткасын жаңы баскычка көтөрүүчү катары колдонобуз. Generate_level функциясында биз катар, col жана кокустуктун өзгөрмөлөрүн баштайбыз. Ошондой эле биз жаңы плитканы түзөбүз, мурунку өлчөмү менен бирдей, бирок бош. Бул жерде бир аз эскертүү бар - тилкени картасынын катарында… col… блогун колдонуу үчүн, плитканын картасында бул өзгөчө плиткалар болушу керек - бул бир аз каршы интуитивдүү жана, балким, Makecodeдогу ката. Ошентип, сизге эмне кылыш керек - плитка картасын түзүп, колдонгуңуз келген бардык плиткалардын түрлөрүн туш келди муунга салып, анан өчүрүңүз.

Биз анын үстүнө биринчи плитканы (0x6) жана ойноткучту коёбуз. Андан кийин биз кийинки кадамды 30 жолу кайталайбыз - кийинки кадам - бул True -False текшерүүлөрүнүн жөнөкөй сериясы, алар кийинки мамычанын плиткасы 1) мурунку деңгээлде 2) бирде жогору же 3) бирде төмөн болушубузду чечет. Кийинки плитканын лава плиткасы болуп кетүү мүмкүнчүлүгү өтө аз - биз булардын көп болушун каалабайбыз! Жасалган ар бир плиткадан кийин биз анын астындагы боштукту лава менен толтурабыз - жөн гана сулуулук үчүн. Акыркы кадам катары биз душмандарды жана үкөктөрдү кошуп, аларды туш келди плиткалардын үстүнө жайгаштырабыз.

5 -кадам: Укмуштуу окуялар башталат

Укмуштуу окуялар башталат
Укмуштуу окуялар башталат

Voila! Биз платформерибизди бүтүрдүк жана каарманыбыз чексиз укмуштуу окуяларга бара алат, жарганаттарды талкалап, үкөктөрдү талкалайт. Эгерде сиз көйгөйлөргө туш болсоңуз, анда кодду биздин GitHub репозиторийинен жүктөп алсаңыз болот.

Бул жөн эле план жана кээ бир жакшыртуулар бар, мисалы, ар кандай душмандар, бонустар, жакшыраак деңгээлдеги муун ж. Эгер оюндун жакшыртылган версиясын чыгарсаңыз, аны төмөндөгү комментарийлерде бөлүшүңүз! GameGo жана башка жабдыктар жөнүндө көбүрөөк маалымат алуу үчүн, биздин веб -сайтка, https://tinkergen.com/ кирип, биздин баракчага жазылыңыз.

TinkerGen MARK (Make A Robot Kit) үчүн Kickstarter кампаниясын түздү, коддоо, робототехника, AI үйрөтүү үчүн робот -комплект!

Сунушталууда: