Sisukord:

Space Invaders in Micropython on Micro: bit: 5 sammu
Space Invaders in Micropython on Micro: bit: 5 sammu

Video: Space Invaders in Micropython on Micro: bit: 5 sammu

Video: Space Invaders in Micropython on Micro: bit: 5 sammu
Video: Flappy Bird ending 2024, Juuli
Anonim
Image
Image

Meie varasemates artiklites oleme uurinud mängude tegemist GameGo, kaasaskantava retro mängukonsooli poolt, mille on välja töötanud TinkerGen haridus. Meie tehtud mängud meenutasid vanu Nintendo mänge. Tänases artiklis astume sammu tagasi, arkaadmängude kuldaega. Loome uuesti Space Invaders mängu Micropythonis Micro: bit mikrokontrolleril - ja keerdkäiguna kasutame ka BitPlayer Micro: bit laiendit, mis võimaldab meil mängu mugavamalt mängida.

Kuna see õpetus käsitleb mängu kodeerimist Micropythonis, siis traditsioonilise järkjärgulise järjestuse asemel, mida varem graafilise programmeerimise õpetuste jaoks kasutasime, läheme koodiplokkide kaupa üle-vaatame üle olulised funktsioonid, klassid ja peamised silmus. Kogu koodi saate alla laadida selle projekti GitHubi hoidlast. Pange kinni ja alustame!

Tarvikud

TinkerGen BitPlayer

BBC Micro: natuke

Samm: põhisilmus

Juhtkang
Juhtkang

Selles õpetuses kasutan sõna "meetod" üsna sageli. Pythoni meetod sarnaneb mõnevõrra funktsiooniga, välja arvatud juhul, kui see on seotud objekti/klassidega. Niisiis, lihtsustamiseks võite seda lugeda kui funktsiooni klassi sees. Meetodite kohta saate rohkem lugeda siit.

Me siseneme põhiahelasse nupuga

kuigi mitte game_over:

seisukorras. Toas saame sissetungijate arvu, nende ilmumise võimaluse ja tasemete sõnastikust järgmisele tasemele jõudmiseks vajaliku arvu. Järgmisena kontrollime vasakpoolse parema liikumist klassi eksemplari JoyStick Listen_Dir eksemplari meetoditega. Kui üks tingimustest on tõene, suurendame/vähendame oma mängitava tegelase x-väärtust. Me piirame seda [-2, 2] kahe tingimusega. Seejärel lähtestame DisplayBufferi klassi eksemplari ja kontrollime, kas nupp "kilp" või "tulekahju" vajutab. Objektide seadistamiseks hilisemaks renderdamiseks kasutame meetodit DisplayBuffer.set (). Kilbi renderdamiseks kasutame otse DisplayBuffer.set (), kuid täppide ja sissetungijate jaoks lisame need nende vastavasse loendisse ja seadistame () ükshaaval silmuseks koos järgmise koodiga, et hiljem DispBuffer.render () abil renderdada:

b täpid: b.render (dispBuf) v in vaders: v.render (dispBuf)

Kõik sissetungijad, kuulid ja kilp kuvatakse ekraanil iga kord, kui kordatakse põhisilmus

dispBuf.render ()

Enne põhiahela lõppu kontrollime, kas mõni sissetungijate kuulidest on jõudnud ekraani lõppu, ja kui on, siis kustutame need nende vastavatest loenditest.

2. samm: juhtnupp

Juhtkang
Juhtkang

BitPlayerit on lihtne käes hoida ja kasutada. Kaheteljelise juhthoovaga, nagu Gameboy või PSP kontrollerid, sisaldab see veel 6 programmeeritavat nuppu, mis on tähistatud tähega L, R, A, B, C ja D. Ümbritseva ja interaktiivse kogemuse saamiseks pakub BitPlayer ise sisaldab suminat, vibratsioonimootorit ja Grove I2C porti, et ühendada täiendavaid välisseadmeid nagu OLED -ekraan.

Kasutame selle mängu jaoks ainult juhthoova vasakut-paremat klahvi, kõigi BitPlayeri nuppude kasutamise täieliku näite jaoks saate vaadata selle projekti GitHubi hoidlas olevat joystick_example.py. JoySticki klassi eksemplari loomisel kontrollime X-telje vaikelugemist ja salvestame selle väärtuse ise. Lugege_X. Seejärel kontrollime funktsioonis Listen_Dir, kas kõrvalekalle sellest vaikeväärtusest on tundlikkusmuutujast suurem (proovige seda ise muuta, kui tunnete, et JoyStick on liiga tundlik), ja tagastame True of False vastavalt tuvastatud suunale.

Vaatame konkreetset näidet selle toimimise kohta:

Oletame, et meie X-telje vaikeväärtus on 0. Siis, kui liigutame juhtkangi paremale:

New_X = JoyStick_X.read_analog () #New_X = 200

Parem = Uus_X - ise. Lugege_X #paremal = 200 Vasakul = ise. Lugege_X - Uus_X #Vasak = -200

Siis kui suunda kontrollime:

Täpsus = 150if paremal> Täpsus: #200> 150 True Get_Rocker = DIR ['R'] elif Left> Precision: #-200> 150 False Get_Rocker = DIR ['L'] else: Get_Rocker = DIR ['NONE'] if Dir == Get_Rocker: return True else: return False

Samm: kuvage puhver

Kuva puhver
Kuva puhver

DisplayBuf klass vastutab LED -ekraani juhtimise eest. Seda tehakse kahe meetodi abil set () ja render (). set () meetod muudab LED -ekraani pikslitele vastavaid väärtusi. Mäletate, et Micro: bit LED -ekraani piksleid saab väljendada stringina või loendina - "00000: 00000: 00000: 00000: 00000" on tühi ekraan. "00000: 00000: 00000: 00000: 00100" on ekraan, mille alumise rea keskel on hämaralt valgustatud piksel.

00000:

00000

:00000

:00000:

00100"

Seda märget oleks ehk lihtsam töödelda:)

Niisiis, mida me põhiahela ajal teeme, on DisplayBufi call set () meetod, et määrata kõik meie objektid, mida tuleb ekraanil kuvada. Seejärel kasutame meetodit render (), et neid kõiki korraga ekraanil näidata.

4. samm: sissetungijad, täpid ja mängija

Sissetungijad, kuulid ja mängija
Sissetungijad, kuulid ja mängija

Kuulid ja sissetungijad kuuluvad Moveri klassi. Mover klassi eksemplaridel on oma x, y asukohad ja kiirus ning heledus. Mover klassil on kaks eksemplari meetodit set () ja move (). set () meetod lihtsalt kutsub DisplayBuf set () meetodi uuendatud koordinaatidega, et salvestada LED -maatriksil edasiseks renderdamiseks. move () meetod uuendab eksemplari koordinaate vastavalt eksemplari kiirusele - see tuleb kasuks hiljem, kui peame taseme edenedes sissetungijate kiirust muutma.

Class Bullet ja class Invader on Mover klassi alamklassid. Siin kasutame midagi, mida nimetatakse pärandiks. Super () funktsionaalsus võimaldab meil kutsuda alamklassi superklassi meetodeid, ilma et oleks vaja koodi korrata.

Samm: tehke see omaks

Tee sellest oma
Tee sellest oma

Palju õnne! Olete äsja loonud Micro: bitil klassikalise Space Invaders mängu koos mõne laheda mänguriistvaraga. Loomulikult saate siit mängu koodi parandada - näiteks praeguse seisuga on mängul ainult üks tase - saate lisada keerulisemaid. Samuti, nagu mäletate, on algses mängus mängija ees hõljuvad kivid, mida saate ka lisada.

Kui teete mängust täiustatud versiooni, jagage seda allolevates kommentaarides! Lisateabe saamiseks BitPlayeri ja muu riistvara kohta tegijatele ja STEM -i koolitajatele külastage meie veebisaiti https://tinkergen.com/ ja tellige meie uudiskiri.

TinkerGen lõi hiljuti Kickstarteri kampaania MARK (Make A Robot Kit) jaoks, robotikomplekt kodeerimise, robootika ja tehisintellekti õpetamiseks!

Hexkcd/mikro-vadersi algne Micropython-kood muudeti nii, et see töötaks TinkerGen BitPlayeriga.

Soovitan: