Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Pääsilmukka
- Vaihe 2: Ohjaussauva
- Vaihe 3: Näytä puskuri
- Vaihe 4: Hyökkääjät, luodit ja pelaaja
- Vaihe 5: Tee siitä oma
Video: Space Invaders in Micropython on Micro: bit: 5 askelta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Aikaisemmissa artikkeleissamme olemme tutkineet pelien tekemistä GameGolla, joka on TinkerGen -koulutuksen kehittämä kannettava retro -pelikonsoli. Pelit, jotka teimme, muistuttivat vanhoja Nintendo -pelejä. Tämän päivän artikkelissa aiomme ottaa askeleen taaksepäin arcade -pelien kulta -aikaan. Luomme Space Invaders -pelin uudelleen Micropythonissa Micro: bit -mikrokontrollerilla - ja käänteenä käytämme myös BitPlayer Micro: bit -laajennusta, jonka avulla voimme pelata peliä helpommin.
Koska tämä opetusohjelma koskee pelin koodaamista Micropythonissa, menemme perinteisen vaiheittaisen järjestyksen sijaan, jota käytimme aiemmin graafisen ohjelmoinnin opetusohjelmissa, menemme koodilohkon yli lohkolta-käymme läpi tärkeät toiminnot, luokat ja tärkeimmät silmukka. Voit ladata koko koodin tämän projektin GitHub -arkistosta. Solki kiinni ja aloitetaan!
Tarvikkeet
TinkerGen BitPlayer
BBC Micro: bitti
Vaihe 1: Pääsilmukka
Tässä opetusohjelmassa käytän sanaa "method" melko usein. Pythonin menetelmä on jonkin verran samanlainen kuin funktio, paitsi että se liittyy objektiin/luokkiin. Joten yksinkertaisuuden vuoksi voit lukea sen "luokan funktiona". Voit lukea lisää menetelmistä täältä.
Siirrymme pääsilmukkaan
kun ei game_over:
kunto. Sisältä saamme hyökkääjien määrän, mahdollisuuden esiintyä ja tarvittavan määrän päästäksesi seuraavalle tasolle tasojen sanakirjasta. Seuraavaksi tarkistamme vasemmalta oikealle liikkumisen Listen_Dir-ilmentymän menetelmillä luokan instanssissa JoyStick. Jos jokin ehdoista on tosi, lisäämme/vähennämme pelattavan hahmon x-arvoa. Rajoitamme sen arvoon [-2, 2] kahdella ehdolla. Alustamme sitten DisplayBuffer -luokan ilmentymän ja tarkistamme, onko "kilpi" tai "palomerkki" painettu. Käytämme DisplayBuffer.set () -menetelmää objektien asettamiseen myöhempää renderointia varten. Kilven renderointiin käytämme suoraan DisplayBuffer.set (): tä, mutta luoteja ja hyökkääjiä varten lisäämme ne omalle listalleen ja asetamme () ne yksitellen silmukkaan seuraavalla koodilla myöhempää hahmontamista varten DispBuffer.render ():
b -luoteissa: b.render (dispBuf) v -vaders: v.render (dispBuf)
Kaikki hyökkääjät, luodit ja kilpi näytetään näytöllä jokaisen pääsilmukan iteroinnin jälkeen
dispBuf.render ()
Ennen pääsilmukan loppua tarkistamme, onko jokin hyökkääjien luoteista saavuttanut näytön lopun, ja jos ovat, poistamme ne niiden vastaavista luetteloista.
Vaihe 2: Ohjaussauva
BitPlayer on helppo pitää ja käyttää, ja siinä on 2-akselinen ohjaussauva, kuten Gameboy- tai PSP-ohjaimet, ja siinä on myös kuusi muuta ohjelmoitavaa painiketta, jotka on merkitty L, R, A, B, C ja D. Siinä on summeri, tärinämoottori ja Grove I2C -portti, jolla voidaan liittää muita oheislaitteita, kuten OLED -näyttö.
Käytämme pelissä vain ohjaussauvan vasenta ja oikeaa keinukytkintä. Täydellistä esimerkkiä kaikkien BitPlayer-painikkeiden käytöstä voit katsoa joystick_example.py tämän projektin GitHub-arkistosta. Luodessamme JoyStick-luokan ilmentymää tarkistamme X-akselin oletuslukeman ja tallennamme arvon itse. Read_X. Sitten funktiossa Listen_Dir tarkistamme, onko poikkeama oletusarvosta suurempi kuin herkkyysmuuttuja (kokeile säätää sitä itse, jos sinusta tuntuu, että JoyStick on liian herkkä), ja palautamme True of False havaitun suunnan mukaan.
Katsotaanpa konkreettista esimerkkiä tämän toiminnasta:
Oletetaan, että oletusarvoinen X-akselin lukema on 0. Jos siirrämme ohjaussauvaa oikealle:
New_X = JoyStick_X.read_analog () #New_X = 200
Oikea = Uusi_X - itse. Lue_X #Oikea = 200 Vasen = itse. Lue_X - Uusi_X #Vasen = -200
Sitten kun tarkistamme suunnan:
Tarkkuus = 150if Oikea> Tarkkuus: #200> 150 True Get_Rocker = DIR ['R'] elif Vasen> Tarkkuus: #-200> 150 False Get_Rocker = DIR ['L'] muu: Get_Rocker = DIR ['NONE'] jos Dir == Get_Rocker: return True else: return False
Vaihe 3: Näytä puskuri
DisplayBuf -luokka vastaa LED -näytön ohjaamisesta. Se tehdään kahdella menetelmällä, set () ja render (). set () -menetelmä muuttaa LED -näytön pikseleitä vastaavia arvoja. Saatat muistaa, että Micro: bit LED -näytön pikselit voidaan ilmaista merkkijonona tai luettelona - "00000: 00000: 00000: 00000: 00000" on tyhjä näyttö. "00000: 00000: 00000: 00000: 00100" on näyttö, jossa on heikosti valaistu pikseli alarivin keskellä.
00000:
00000
:00000
:00000:
00100"
Tämä merkintä voi olla helpompi käsitellä:)
Joten, mitä teemme pääsilmukan aikana, on DisplayBufin call set () -menetelmä asettaa kaikki kohteet, jotka on näytettävä näytöllä. Sitten käytämme render () -menetelmää näyttääksemme ne kaikki näytöllä samanaikaisesti.
Vaihe 4: Hyökkääjät, luodit ja pelaaja
Luodit ja hyökkääjät kuuluvat Mover -luokkaan. Mover -luokan instansseilla on x-, y -sijainnit ja nopeus sekä kirkkaus. Mover -luokassa on kaksi instanssimenetelmää set () ja move (). set () -menetelmä kutsuu yksinkertaisesti DisplayBuf set () -menetelmää päivitetyillä koordinaateilla tallentamaan myöhempää renderointia varten LED -matriisissa. move () -menetelmä päivittää instanssin koordinaatit instanssin nopeuden mukaan - siitä on hyötyä myöhemmin, kun meidän on muutettava hyökkääjien nopeutta tasojen edetessä.
Class Bullet ja Class Invader ovat Mover -luokan alaluokkia. Tässä käytetään jotain, jota kutsutaan perinnöksi. Super (): n toiminnallisuuden avulla voimme kutsua aliluokan superluokan menetelmiä ilman tarvetta toistaa koodia.
Vaihe 5: Tee siitä oma
Onnittelut! Olet juuri luonut uudelleen klassisen Space Invaders -pelin Micro: bitillä hienolla pelilaitteistolla. Voit tietysti parantaa pelikoodia täältä - esimerkiksi tällä hetkellä pelissä on vain yksi taso - voit lisätä haastavampia. Lisäksi, kuten saatat muistaa, alkuperäisessä pelissä on kiviä, jotka kelluvat pelaajan edessä ja joita voit myös lisätä.
Jos teet parannetun version pelistä, jaa se alla oleviin kommentteihin! Lisätietoja BitPlayeristä ja muista laitteista valmistajille ja STEM -opettajille on verkkosivustollamme https://tinkergen.com/ ja tilaa uutiskirjeemme.
TinkerGen on äskettäin luonut Kickstarter -kampanjan MARKille (Make A Robot Kit), robottipaketti koodauksen, robotiikan ja tekoälyn opettamiseen!
Hexkcd/micro-vadersin alkuperäinen Micropython-koodi muutettiin toimimaan TinkerGen BitPlayerin kanssa.
Suositeltava:
Kallistava LEGO Maze Micro: bit: 9 askelta
LEGO -sokkelon kallistaminen Mikrolla: bitti: Ei ole mikään salaisuus, että LEGO on mahtava, emmekä pidä mistään muusta kuin siitä, että lisäämme hauskaa elektroniikkaa LEGO -sarjoihimme, jotta ne olisivat entistä mahtavampia. LEGO -sokkelossamme on nupit molemmilla sivuilla, joiden avulla voit kallistaa yläpuoliskoa ja ohjata palloa
LCD Invaders: Space Invaders Like Game 16x2 LCD -merkinäytöllä: 7 vaihetta
LCD Invaders: Space Invaders Like Game 16x2 LCD -merkkinäytöllä: Legendaarista Space Invaders -peliä ei tarvitse esitellä. Tämän projektin mielenkiintoisin piirre on, että se käyttää tekstinäyttöä graafiseen tulostukseen. Se saavutetaan toteuttamalla 8 mukautettua merkkiä.Voit ladata koko Arduinon
Yksinkertainen Animatronic Micro: bit: 9 askelta (kuvilla)
Yksinkertainen Animatronic Micro: bit: Tervetuloa ensimmäiseen Instructable -ohjelmaan. Kerron, miten tein tämän Skeksis Animatronicin. Ohjaamalla sinua koko prosessini läpi, toivon, että saat inspiraation tehdä oma robotti, vaikka se ei näytäkään tältä. En puhu paljoakaan
Space Invaders Clock (budjetilla!): 6 vaihetta (kuvilla)
Space Invaders Clock (budjetissa!): Äskettäin näin GeckoDioden hienon rakenteen ja halusin heti rakentaa sen itse. Instructable on Space Invaders -työpöytäkello, ja suosittelen katsomaan sitä tämän lukemisen jälkeen. Projekti rakennettiin lähes yksinomaan osista, jotka on hankittu
Space Invaders Kattokruunu, jossa hehku pimeässä Toiminta: 16 vaihetta (kuvilla)
Space Invaders -kattokruunu hehkuu pimeässä: Käytä 3D -mallinnusta/tulostusta, laserleikattua akryyliä, hartsivalua, UV -reaktiivista pigmenttiä, LED -valoja ja yksinkertaisia johdotuksia, jotta voit luoda tyylikkään ja retro -viileän avaruuden hyökkääjän kattokruunun tai lampun. Olen sisällyttänyt mukavan tempun kaarevien kulmien tekemiseen laserkannasta