INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-23 12:53
In ons vorige artikels het ons speletjies op GameGo ondersoek, 'n draagbare retro -spelkonsole wat ontwikkel is deur TinkerGen Education. Die speletjies wat ons gemaak het, herinner aan ou Nintendo -speletjies. In vandag se artikel gaan ons 'n stap terug neem na die goue era van arcade games. Ons sal Space Invaders -speletjie in Micropython op Micro: bit -mikrobeheerder herskep - en as 'n draai, sal ons ook BitPlayer Micro: bit -uitbreiding gebruik, wat ons in staat stel om makliker speletjies te speel.
Aangesien hierdie tutoriaal handel oor die kodering van die spel in Micropython, gaan ons in plaas van die tradisionele stadium-vir-fase-volgorde wat ons voorheen vir grafiese programme-tutoriale gebruik het, die kode blok vir blok oor-oor belangrike funksies, klasse en die belangrikste lus. U kan die volledige kode aflaai in die GitHub -bewaarplek van hierdie projek. Maak vas en laat ons begin!
Voorrade
TinkerGen BitPlayer
BBC Micro: bietjie
Stap 1: Hooflus
In hierdie handleiding sal ek die woord "metode" gereeld gebruik. 'N Metode in luislang is ietwat soortgelyk aan 'n funksie, behalwe dat dit met voorwerp/klasse geassosieer word. Om dit te vereenvoudig, kan u dit lees as ''n funksie in die klas'. U kan hier meer lees oor metodes.
Ons betree die hooflus met
terwyl dit nie game_over is nie:
toestand. Binne kry ons die aantal indringers, die kans dat hulle verskyn en die aantal wat nodig is om na die volgende vlak uit die vlakke -woordeboek te kom. Vervolgens kyk ons na beweging na links-regs met Listen_Dir-instansiemetodes van JoyStick, klasinstansie. As een van die voorwaardes as waar beskou word, verhoog/verminder ons die waarde van ons speelbare karakter. Ons beperk dit tot [-2, 2] met twee as-voorwaardes. Dan initialiseer ons 'n voorbeeld van die DisplayBuffer -klas en kyk of 'knoppie' of 'vuurkogel' gedruk word. Ons gebruik metode DisplayBuffer.set () om voorwerpe te stel vir latere weergawe. Vir die weergawe van die skild gebruik ons DisplayBuffer.set () direk, maar vir koeëls en indringers voeg ons dit by hul onderskeie lys en stel () dit een vir een in vir lus met die volgende kode vir latere weergawe met DispBuffer.render ():
vir b in koeëls: b.render (dispBuf) vir v in vaders: v.render (dispBuf)
Alle indringers, koeëls en skild word een keer by elke hooflus herhaal
dispBuf.render ()
Voor die einde van die hooflus kyk ons of enige van die koeëls van indringers die einde van die skerm bereik het, en as dit die geval is, verwyder ons dit uit hul onderskeie lyste.
Stap 2: joystick
BitPlayer is maklik om vas te hou en te gebruik, met 'n 2-as-joystick soos Gameboy- of PSP-beheerders, bevat dit ook nog ses programmeerbare knoppies gemerk as L, R, A, B, C en D. Vir 'n meeslepende en interaktiewe ervaring, bevat die BitPlayer self beskik oor 'n zoemer, 'n vibrasiemotor en 'n Grove I2C -poort om ekstra randapparatuur soos 'n OLED -skerm aan te sluit.
Ons gebruik slegs die links-regs-wip van die joystick vir hierdie speletjie; vir 'n volledige voorbeeld van die gebruik van alle BitPlayer-knoppies, kan u na joystick_example.py kyk in die GitHub-bewaarplek van hierdie projek. By die skep van die instansie van JoyStick-klas kyk ons na die standaardlesing van die X-as en stoor die waarde in self. Read_X. Dan kyk ons in funksie Listen_Dir of die afwyking van die standaardwaarde hoër is as die sensitiwiteitsveranderlike (probeer dit self aanpas, as u voel dat JoyStick te sensitief is) en gee True of False terug volgens die gedetecteerde rigting.
Kom ons kyk na 'n konkrete voorbeeld van hoe dit werk:
Gestel ons standaard X-as-lesing is 0. As ons dan die joystick regs skuif:
New_X = JoyStick_X.read_analog () #New_X = 200
Regs = New_X - self. Read_X #Right = 200 Links = self. Read_X - New_X #Left = -200
As ons dan kyk na rigting:
Presisie = 150 as regs> Presisie: #200> 150 True Get_Rocker = DIR ['R'] elif Links> Presisie: #-200> 150 Onwaar Get_Rocker = DIR ['L'] anders: Get_Rocker = DIR ['NONE'] as Dir == Get_Rocker: return Waar anders: return Onwaar
Stap 3: Vertoonbuffer
DisplayBuf -klas is verantwoordelik vir die beheer van die LED -skerm. Dit word gedoen met behulp van twee metodes, set () en render (). set () metode verander die waardes wat ooreenstem met LED -skermpiksels. U onthou miskien dat die pixels op die Micro: bit LED -skerm uitgedruk kan word as 'n string of 'n lys - "00000: 00000: 00000: 00000: 00000" is 'n leë skerm. "00000: 00000: 00000: 00000: 00100" is 'n skerm met 'n swak pixel in die middel van die onderste ry.
00000:
00000
:00000
:00000:
00100"
Hierdie notasie is dalk makliker om te verwerk:)
Wat ons dus tydens die hooflus doen, is die oproepstel () metode van DisplayBuf om al ons voorwerpe wat op die skerm vertoon moet word, in te stel. Dan gebruik ons die render () -metode om hulle almal gelyktydig op die skerm te wys.
Stap 4: Invaders, Bullets en die speler
Bullets en Invaders behoort tot die Mover -klas. Beweegklasgevalle het hul x, y liggings en spoed, sowel as helderheid. Mover -klas het twee instansiemetodes, set () en move (). set () metode noem eenvoudig DisplayBuf set () metode met opgedateerde koördinate om te stoor vir latere weergawe op LED matriks. move () metode -opdaterings instansekoördineer volgens instansiesnelheid - wat later handig is as ons die snelheid van indringers moet verander namate die vlakke vorder.
Class Bullet en class Invader is subklasse van die Mover -klas. Hier gebruik ons iets wat erfenis genoem word. Met die funksionaliteit van super () kan ons metodes van die superklas in subklasse noem, sonder om die kode te herhaal.
Stap 5: Maak dit u eie
Baie geluk! U het pas die klassieke Space Invaders-speletjie op Micro: bit herskep met 'n paar koel hardeware. U kan natuurlik die spelkode van hier af verbeter - byvoorbeeld, op die oomblik het die spel slegs een vlak - u kan meer uitdagende programme byvoeg. Soos u kan onthou, het die oorspronklike spel rotse wat voor die speler dryf, wat u ook kan byvoeg.
As u 'n verbeterde weergawe van die spel maak, deel dit dan in die kommentaar hieronder! Vir meer inligting oor BitPlayer en ander hardeware vir vervaardigers en STEM -opvoeders, besoek ons webwerf, https://tinkergen.com/ en teken in op ons nuusbrief.
TinkerGen het onlangs 'n Kickstarter -veldtog vir MARK (Make A Robot Kit), 'n robotstel vir die onderrig van kodering, robotika, AI!
Die oorspronklike Micropython-kode van hexkcd/micro-vaders is verander om saam met TinkerGen BitPlayer te werk.
Aanbeveel:
Lego draagbare spelkonsole met Space Invaders: 4 stappe
Lego Portable Gaming Console With Space Invaders: Het jy al ooit daaraan gedink om 'n spelontwikkelaar te wees en jou eie spelkonsole te bou wat jy onderweg kan speel? Al wat u nodig het, is 'n bietjie tyd, hardeware Lego bricksa Mini-Calliope (kan bestel word op hierdie webwerf https://calliope.cc/en) en 'n bietjie vaardigheid
LCD Invaders: 'n Space Invaders Like Game op 'n 16x2 LCD -karaktervertoning: 7 stappe
LCD Invaders: 'n Space Invaders Like Game op 'n 16x2 LCD -karaktervertoning: u hoef nie 'n legendariese "Space Invaders" -speletjie bekend te stel nie. Die interessantste kenmerk van hierdie projek is dat dit teksvertoning gebruik vir grafiese uitvoer. Dit word bereik deur 8 persoonlike karakters te implementeer. U kan die volledige Arduino aflaai
N Micro: Bit Robot en Joystick: Bit Controller met MicroPython programmeer: 11 stappe
N Micro: Bit Robot en Joystick: Bit Controller met MicroPython programmeer: Vir Robocamp 2019, ons somerrobotika-kamp, soldeer jongmense van 10-13 jaar en programmeer en bou 'n BBC micro: bit gebaseerde' antweight robot ', sowel as programmeer 'n mikro: bietjie om as 'n afstandsbediening te gebruik. As u tans by Robocamp is, ski
Space Invaders -klok (met 'n begroting!): 6 stappe (met foto's)
Space Invaders Clock (met 'n begroting!): Ek het onlangs 'n oulike gebou van GeckoDiode gesien en ek wou dit dadelik self bou. Die Instructable is Space Invaders Desktop Clock en ek beveel aan dat u daarna kyk nadat u dit gelees het. Die projek is amper uitsluitlik opgebou uit onderdele wat
Space Invaders Kroonluchter Met Glow in the Dark Action: 16 stappe (met foto's)
Space Invaders kandelaar met gloei in die donker aksie: gebruik 3D -modellering/drukwerk, laser gesnyde akriel, hars giet, UV reaktiewe pigment, LED's en 'n paar eenvoudige bedrading om 'n hoë styl en retro koel ruimte indringers kandelaar of lamp te maak. Ek het 'n goeie truuk ingesluit vir die maak van geboë hoeke uit lasersakke