Мазмұны:

Battle City ремейктері GameGo -да Makecode Arcade көмегімен: 4 қадам (суреттермен)
Battle City ремейктері GameGo -да Makecode Arcade көмегімен: 4 қадам (суреттермен)

Бейне: Battle City ремейктері GameGo -да Makecode Arcade көмегімен: 4 қадам (суреттермен)

Бейне: Battle City ремейктері GameGo -да Makecode Arcade көмегімен: 4 қадам (суреттермен)
Бейне: Battle City Remake on GameGo with Makecode Arcade 2024, Қараша
Anonim
Image
Image

GameGo - TinkerGen STEM білім беруімен жасалған Microsoft Makecode үйлесімді ретро ойын портативті консолі. Ол STM32F401RET6 ARM Cortex M4 чипіне негізделген және STEM тәрбиешілеріне немесе ретро видео ойындар жасауды ұнататын адамдарға арналған. Сіз бұл оқулықты орындап, ойынды Makecode Arcade тренажерінде көріңіз, содан кейін оны GameGo -да іске қосыңыз.

Бұл мақалада біз Nintendo Entertainment System (NES) үшін Namco 1985 жылы шығарған және шығарған классикалық Battle City танк ату ойынын жаңғыртуға тырысамыз. Түпнұсқа ойында ойыншы танкті басқарады және жау танктерін жою үшін снарядтарды атып тастайды. Жау танктері ойыншының базасын, сондай -ақ ойыншының танкісін құртуға тырысады. Біз GameGo -мен блоктық бағдарламалау тәжірибесін жақсарту үшін ойынға кейбір өзгерістер енгіземіз, бірақ біздің ремейк әлі де бастапқы ойынға ұқсастығын сақтайды. Бастайық!

Жабдықтар

GameGo

1 -қадам: Біздің альтер -эго - сары танк

Біздің Альтер -эго - сары танк
Біздің Альтер -эго - сары танк

Https://arcade.makecode.com/ сайтында Makecode Arcade ашыңыз және жаңа жобаны нұқыңыз. Біз альтерногиді сары танкке айналдыруды бастаймыз. Ойнатқыш блогының сприті үшін Set mySprite пәрменін таңдаңыз және біздің бастапқы спрайт ретінде сары ыдысты жоғары қаратып салыңыз, сол блокты бастапқы блоктың ішіне қойыңыз. Move mySprite батырмалар блогын қосыңыз. Енді бізде симуляцияда түймелермен жылжуға болатын резервуар бар! Тамаша, бірақ ол әрқашан бір бағытқа қарайды, тіпті біз төмен немесе бүйірден жылжысақ та …

Мұны түзету үшін, тағы төрт блокты қосамыз, әр бағыт түймешігі үшін бір. Бағыт деп аталатын жаңа айнымалы құрыңыз - біз ондағы біздің танктің қозғалыс бағытын сақтаймыз, 100 төменге сәйкес келеді, -100 жоғары сәйкес болады, Оңға -200, солға -200. Неліктен бұл сандар? Кейінірек, біз танкіміз ататын снарядтарды қосқанда көресіз. Бұл төрт блоктың логикасы өте қарапайым - біз жаңа бағыттың (батырманы басудан) алдыңғы бағытпен бірдей екенін тексереміз. Егер солай болса, біз негізінен ешқандай өзгеріс жасамаймыз. Егер олай болмаса, біз танктің спритін өзгертеміз, ал төмен және сол жаққа қарай спрайттың суретін аударып, қосымша сприттерді түсірмеу үшін. Ақырында бағыттың бастапқы мәнін -100 -ге (танк жоғары) тағайындайық, себебі біздің танк ойынды осылай бастайды. Сары резервуарды қазір жылжытуға тырысыңыз, спрайт қозғалыс бағытына сәйкес өзгереді! Өте жақсы, енді оқ қосайық.

Біз vx vy жылдамдығымен mySprite -ден снарядқа снарядпен оқ шығарамыз (сол сприт үшін кішкене күміс квадрат сызамыз). А түймесін басқан блоктың ішінде біз сары танктің солға/оңға жоғары/төмен қарағанын көру үшін бағыттың абсолюттік мәнін тексеруіміз керек. Содан кейін біз снарядты бағыттың ауыспалы жылдамдығымен атқылай бастаймыз, сондықтан бізде бағыт мәндері үшін -100/100/-200/200 болды.

Енді бізде снарядтарды ататын және қозғалатын сары танк бар. Егер сары симуляциялық танктер сезіне алатын болса, онда бұл бос кеңістікте жауларсыз және жасайтын істерсіз жалғыздық сезінер еді. Сонымен, келесі қадам үшін уақытты өткізу үшін жауларды қосайық.

2 -қадам: жауларды шығарыңыз

Дұшпандарды шығарыңыз
Дұшпандарды шығарыңыз
Дұшпандарды шығарыңыз
Дұшпандарды шығарыңыз

Біз бұл қадамды көптеген жаңа айнымалыларды құрудан бастаймыз: екі массив (біреуі қарсыластың спритін ұстап тұру үшін, екіншісі жаудың бағыттарын ұстау үшін), уылдырық шашу арасындағы уақыт кезеңін сақтауға арналған уақытша ауыспалы мән, жаудың максималды санын сақтауға арналған жау саны. осы уақытта. Біз сондай -ақ іске қосылатын блокқа екі снаряд (снаряд және жау снаряды) қосамыз - бұл кейінірек қатені болдырмауға көмектеседі.

Әрі қарай біз ойын жаңартуларында әр … ms блогын жасаймыз, оған spawn_time айнымалысын енгіземіз. Блоктың логикасы қарапайым - егер ұрыс алаңындағы қарсыластардың жалпы саны рұқсат етілген дұшпандар санынан аз болса, dushman_sprite_list тізіміне жауды қосыңыз және қосыңыз. Бұл жау үшін 200 (дұрыс) бағыт.

Әрі қарай, жаудың блок -спритінде біз графикалық эффектілерді қосамыз, оны кездейсоқ бос тақтаға орналастырамыз және осы спрайт үшін pick_direction функциясын шақырамыз. Спрайтта жаудың қабырғаға соғылуы кезінде біз бірдей функцияны pick_direction деп атаймыз.

Бұл функцияда не бар? Міне, бәрі біршама күрделене бастайды, сондықтан ұстаңыз. Қарсыластың танкінің көтерілу ықтималдығы 50 % және оның 50 % төмендеу мүмкіндігі бар - біз сәйкесінше спрайтты өзгертеміз. Мұндағы жалғыз амал - біз жаудың жауы_ бағыттары_тізіміндегі сол танкке сәйкес келетін мәнді жаңа бағытқа өзгертуіміз керек, сондықтан біз оқтарды дұрыс бағытта жібереміз. Ол үшін dushman sprite индексін dushman_sprite_list -те табамыз және dushman_ бағыттары тізімінде осы элементтің мәнін өзгертеміз.

Соңында, оқ атуды қосайық. Біз әр 500 мс блок сайын ойынға жаңартуды қосамыз және dushman_sprite_list тізіміне элемент қоямыз. 30% ықтималдықпен жау сприті қарсыластың снарядын қозғалыс бағытында атып жібереді.

Егер біз қазір ойынды имитациялық түрде бастасақ, біздің сары танк пен жау танкілерінің бір нүктеде пайда болғанын және бос кеңістікке кетіп бара жатқанын көреміз. Біз атуға болады, олар біздің сары танкімізді атып алады, бірақ ештеңе болмайды. Бұл соншалықты мағынасыз сезінеді:) Соңғы қадам ретінде әшекейлер мен ойын механикасын қосайық.

3 -қадам: Ойын 42

Ойынның 42
Ойынның 42
Ойынның 42
Ойынның 42
Ойынның 42
Ойынның 42

Біз бұл қадамды «Ақпарат» қойындысынан өмір мен ұпай қосудан бастаймыз және өмірді 10 -ға қойып, нөлге бағалаймыз. Содан кейін біз блоктық тақтайшалар картасын… қосамыз. Файл картасын жоғарыдағы скриншотта көрсетілгендей етіп салыңыз. Қабырғаларды қосуды ұмытпаңыз!

Снарядтың басқа спритін қосамыз, мейірімді ойыншының бір -біріне сәйкес келуі - дәл осы кезде біздің сары танкке жаудың оқтары тиді. Біз бұл снарядтардың өзіміздің емес, жаудың оқтары екеніне көз жеткізуіміз керек, сондықтан егер біз блоктағы шартты және егер ол дұрыс деп бағалайтын болса, онда біз өмірдің санынан біреуін алып тастаймыз. Осыған ұқсас, спрайттың басқа түріндегі снаряд басқа түрдегі жаудың үстіне түседі, біз снарядтың сары танктен снаряд екеніне көз жеткіземіз, егер бұл шарт шын деп бағаланса, біз басқа жауды (жау танкісін) жоямыз, оны тізімнен алып тастаңыз. dushman_sprite_list тізіміне енгізіп, біреуін ұпайға қосыңыз.

Соңғы нәрсе - жеңіс пен жеңілістің шарттары - жеңіс үшін біз ұпайдың жоғары немесе мәңгілік блокта 10 -ға тең екендігін тексереміз. Егер солай болса, онда біз жеңіс экранын көрсетеміз. Ал нөлдік блокта біз Game Over экранын көрсетеміз.

Енді ойынның ойдағыдай жүріп жатқанын көру үшін оны модельдеуде қолданып көріңіз. Содан кейін оны GameGo -ға жүктеп, жау танкілерін сындырудан ләззат алыңыз!

4 -қадам: шексіз ойын және жақсартулар

Шексіз ойын және жақсартулар
Шексіз ойын және жақсартулар

Біздің GitHub репозиторийінде сіз Makecode аркадасына арналған екі файлды жүктей аласыз - біреуі осы нұсқаулықты орындасаңыз, екіншісі кездейсоқ деңгейлік прогрессиямен жаңартылған нұсқаға сәйкес келеді. Оның 10 деңгейі бар, олардың әрқайсысы кездейсоқ түрде әр деңгейдегі жаулардың саны артады.

Әрине, сіз немесе сіздің оқушыларыңыз ойынға қосатын нәрселер одан да көп! Жақсы музыка, бұзылатын қабырғалар, әр түрлі жеңіс шарттары және т.

Егер сіз ойынның жақсартылған нұсқасын жасасаңыз, оны төмендегі түсініктемелерде бөлісіңіз! GameGo және өндірушілер мен STEM тәрбиешілеріне арналған басқа да жабдықтар туралы қосымша ақпарат алу үшін біздің веб -сайтқа кіріңіз, https://tinkergen.com/ және біздің блогқа жазылыңыз.

TinkerGen MARK (Make A Robot Kit) үшін Kickstarter науқанын бастады, кодтау, робототехника, AI үйретуге арналған роботтар жиынтығы!

Ұсынылған: