Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-23 14:58
Ankstesniuose straipsniuose mes ištyrėme žaidimų kūrimą „GameGo“- nešiojamoje retro žaidimų konsolėje, kurią sukūrė TinkerGen edukacija. Mūsų sukurti žaidimai priminė senus „Nintendo“žaidimus. Šiandienos straipsnyje mes žengsime žingsnį atgal, į arkadinių žaidimų aukso amžių. Mes iš naujo sukursime „Space Invaders“žaidimą „Micropython“sistemoje „Micro: bit“mikrovaldiklyje - ir kaip posūkį taip pat naudosime „BitPlayer Micro: bit“plėtinį, kuris leis mums patogiau žaisti žaidimą.
Kadangi ši pamoka skirta žaidimo kodavimui „Micropython“, vietoj tradicinės nuoseklios nuoseklios sekos, kurią anksčiau naudojome grafinio programavimo pamokoms, ketiname pereiti prie kodo pagal bloką-peržvelgsime svarbias funkcijas, klases ir pagrindines kilpa. Visą kodą galite atsisiųsti šio projekto „GitHub“saugykloje. Užsisegti ir pradėti!
Prekės
TinkerGen BitPlayer
„BBC Micro“: bit
1 žingsnis: pagrindinė kilpa
Šioje pamokoje aš gana dažnai vartosiu žodį „metodas“. „Python“metodas yra šiek tiek panašus į funkciją, išskyrus tai, kad jis yra susietas su objektu/klasėmis. Taigi supaprastinimui galite jį perskaityti kaip „klasės funkciją“. Daugiau apie metodus galite paskaityti čia.
Įeiname į pagrindinę kilpą su
o ne game_over:
būklė. Viduje gauname įsibrovėlių skaičių, jų pasirodymo tikimybę ir skaičių, reikalingą norint patekti į kitą lygį iš lygių žodyno. Toliau mes patikriname judėjimą iš kairės į dešinę naudodami „Class_ instance“„JoyStick“metodus „Listen_Dir“. Jei viena iš sąlygų įvertinama kaip „Tiesa“, mes padidiname/sumažiname žaidžiamo personažo x reikšmę. Mes apribojame jį iki [-2, 2], jei yra dvi sąlygos. Tada inicijuojame „DisplayBuffer“klasės egzempliorių ir patikriname, ar paspaudžiamas „skydas“arba „ugnies kulka“. Mes naudojame metodą „DisplayBuffer.set ()“, kad nustatytume objektus vėlesniam atvaizdavimui. Skydui atvaizduoti naudojame tiesiogiai „DisplayBuffer.set“(), bet kulkoms ir įsibrovėliams pridedame juos prie atitinkamo sąrašo ir nustatome () juos vieną po kito ciklui su šiuo kodu, kad vėliau pateiktume „DispBuffer.render“():
„b in bullets“: b.render (dispBuf) „v in vaders“: v.render (dispBuf)
Visi įsibrovėliai, kulkos ir skydas rodomi ekrane kiekvieną kartą kartojant pagrindinę kilpą
dispBuf.render ()
Prieš pagrindinės kilpos pabaigą patikriname, ar bet kuri užpuolikų kulka nepasiekė ekrano pabaigos, ir jei taip, ištriname jas iš atitinkamų sąrašų.
2 žingsnis: vairasvirtė
„BitPlayer“lengva laikyti ir naudoti, naudojant 2 ašių vairasvirtę, pvz., „Gameboy“ar PSP valdiklius, taip pat yra dar 6 programuojami mygtukai, pažymėti kaip „L“, „R“, „A“, „B“, „C“ir „D.“. Jame yra garsinis signalas, vibracinis variklis ir „Grove I2C“prievadas, skirtas prijungti papildomus išorinius įrenginius, tokius kaip OLED ekranas.
Šiam žaidimui naudojame tik vairasvirtės kairįjį ir dešinįjį klavišus. Norėdami pamatyti visą „BitPlayer“mygtukų naudojimo pavyzdį, šio projekto „GitHub“saugykloje galite pažvelgti į joystick_example.py. Kurdami „JoyStick“klasės egzempliorių, patikriname, ar yra X ašies numatytasis skaitymas, ir išsaugome šią vertę savarankiškai. Read_X. Tada funkcijoje „Listen_Dir“patikriname, ar nukrypimas nuo tos numatytosios vertės yra didesnis nei jautrumo kintamasis (pabandykite jį patikslinti patys, jei manote, kad „JoyStick“yra per jautrus) ir pagal nustatytą kryptį pateikiame „True of False“.
Pažvelkime į konkretų pavyzdį, kaip tai veikia:
Tarkime, kad numatytasis X ašies rodmuo yra 0. Tada, jei perkeliame vairasvirtę į dešinę:
New_X = JoyStick_X.read_analog () #New_X = 200
Dešinė = New_X - self. Read_X #Right = 200 Left = self. Read_X - New_X #Left = -200
Tada, kai tikriname kryptį:
Tikslumas = 150if Teisė> Tikslumas: #200> 150 Tikras Get_Rocker = DIR ['R'] elif Left> Tikslumas: #-200> 150 False Get_Rocker = DIR ['L'] else: Get_Rocker = DIR ['NONE'] if Dir == Get_Rocker: return True else: return False
3 žingsnis: rodykite buferį
„DisplayBuf“klasė yra atsakinga už LED ekrano valdymą. Tai atliekama naudojant du metodus: set () ir render (). set () metodas keičia reikšmes, atitinkančias LED ekrano pikselius. Galbūt prisiminsite, kad „Micro: bit“LED ekrano pikseliai gali būti išreikšti kaip eilutė arba sąrašas - „00000: 00000: 00000: 00000: 00000“yra tuščias ekranas. „00000: 00000: 00000: 00000: 00100“yra ekranas su silpnai apšviestu pikseliu apatinės eilutės centre.
00000:
00000
:00000
:00000:
00100"
Šį užrašą gali būti lengviau apdoroti:)
Taigi, tai, ką mes darome pagrindinės kilpos metu, yra „DisplayBuf“skambučių nustatymo () metodas, skirtas nustatyti visus mūsų objektus, kuriuos reikia rodyti ekrane. Tada mes naudojame render () metodą, kad juos visus vienu metu parodytume ekrane.
4 žingsnis: Įsibrovėliai, kulkos ir žaidėjas
Kulkos ir užpuolikai priklauso „Mover“klasei. „Mover“klasės egzemplioriai turi savo x, y vietas ir greitį, taip pat ryškumą. „Mover“klasėje yra du egzempliorių metodai: set () ir move (). set () metodas tiesiog iškviečia „DisplayBuf set“() metodą su atnaujintomis koordinatėmis, kad vėliau išsaugotų LED matricą. „move ()“metodas atnaujina egzempliorių koordinates pagal egzempliorių greitį - tai praverčia vėliau, kai, keičiantis lygiui, turime keisti įsibrovėlių greitį.
„Class Bullet“ir „Class Invader“yra „Mover“klasės poklasiai. Čia mes naudojame tai, kas vadinama paveldėjimu. Super () funkcionalumas leidžia mums iškviesti superklasės metodus poklasyje, nereikia kartoti kodo.
5 žingsnis: padarykite tai savo
Sveikinu! Jūs ką tik iš naujo sukūrėte klasikinį „Space Invaders“žaidimą „Micro: bit“su šaunia žaidimų aparatūra. Žinoma, čia galite patobulinti žaidimo kodą - pavyzdžiui, kol kas žaidimas turi tik vieną lygį - galite pridėti sudėtingesnių. Be to, kaip galite prisiminti, originaliame žaidime priešais grotuvą plaukioja akmenys, kuriuos taip pat galite pridėti.
Jei sukūrėte patobulintą žaidimo versiją, pasidalykite ja komentaruose žemiau! Norėdami gauti daugiau informacijos apie „BitPlayer“ir kitą aparatūrą, skirtą kūrėjams ir STEM pedagogams, apsilankykite mūsų svetainėje https://tinkergen.com/ ir užsiprenumeruokite mūsų naujienlaiškį.
„TinkerGen“neseniai sukūrė „Kickstarter“kampaniją, skirtą „MARK“(„Make A Robot Kit“) - tai robotų rinkinys, skirtas mokyti kodavimo, robotikos, AI!
Originalus „Micropython“kodas iš „hexkcd“/„micro-vaders“buvo pakeistas, kad veiktų su „TinkerGen BitPlayer“.
Rekomenduojamas:
Kaip paleisti servo variklius naudojant Moto: bit su Micro: bit: 7 žingsniai (su nuotraukomis)
Kaip paleisti „Servo“variklius naudojant „Moto: bit“su „Micro: bit“: vienas iš būdų išplėsti „micro: bit“funkcionalumą yra naudoti „SparkFun Electronics“plokštę, pavadintą moto: bit (maždaug 15-20 USD). Jis atrodo sudėtingas ir turi daug funkcijų, tačiau iš jo paleisti servo variklius nėra sunku. Moto: bitas leidžia jums
LCD užpuolikai: „Space Invaders Like“žaidimas 16x2 LCD simbolių ekrane: 7 žingsniai
„LCD Invaders“: „Space Invaders Like Game“16x2 LCD simbolių ekrane: nereikia pristatyti legendinio „Space Invaders“žaidimo. Įdomiausia šio projekto ypatybė yra ta, kad grafiniam išėjimui naudojamas tekstinis ekranas. Tai pasiekiama įgyvendinant 8 pasirinktinius simbolius. Galite atsisiųsti visą „Arduino“
Kaip padaryti „Space Invaders“naudojant „Micro Bit“: 4 žingsniai
Kaip padaryti „Space Invaders“„Micro Bit“: Taigi pirmasis žingsnis yra sukurti mūsų laivą. Einate į " Basic " ir pridėkite " Pradedant " blokuoti. Tada eikite į " Kintamieji " ir sukuriate kintamąjį, pavadintą " SHIP " ir pasirinkite bloką iš " Kintamieji " skirtukas t
„Space Invaders“laikrodis (turint biudžetą!): 6 žingsniai (su nuotraukomis)
„Space Invaders Clock“(turint biudžetą!): Neseniai pamačiau šaunią „GeckoDiode“konstrukciją ir iškart norėjau ją pasigaminti pati. „Instructable“yra „Space Invaders“darbalaukio laikrodis, ir aš rekomenduoju jums jį pažvelgti perskaičius šį. Projektas buvo beveik vien sukurtas iš dalių, gautų
„Space Invaders“liustra su švytėjimu tamsoje: 16 žingsnių (su nuotraukomis)
„Space Invaders“liustra su švytėjimu tamsoje: naudokite 3D modeliavimą/spausdinimą, lazeriu pjaustytą akrilą, liejimą iš dervos, UV reaktyvų pigmentą, šviesos diodus ir keletą paprastų laidų, kad sukurtumėte aukšto stiliaus ir retro vėsioje erdvėje įsibrovėlių liustra ar lempą. Aš įtraukiau gražų triuką, kaip išlenktus kampus padaryti iš lazerio