Përmbajtje:
- Furnizimet
- Hapi 1: Rrethi kryesor
- Hapi 2: Xhojstik
- Hapi 3: Shfaq tamponin
- Hapi 4: Pushtuesit, Plumbat dhe Lojtari
- Hapi 5: Bëjeni tuajin
Video: Pushtuesit hapësinorë në Mikropiton në Mikro: bit: 5 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:13
Në artikujt tanë të mëparshëm ne kemi eksploruar krijimin e lojërave në GameGo, një tastierë portative lojërash retro e zhvilluar nga arsimi TinkerGen. Lojërat që ne bëmë të kujtonin lojërat e vjetra Nintendo. Në artikullin e sotëm, ne do të bëjmë një hap prapa, në epokën e artë të lojërave arcade. Ne do të rikrijojmë lojën Space Invaders në Micropython në Micro: bit microcontroller - dhe si kthesë, ne gjithashtu do të përdorim BitPlayer Micro: zgjerim bit, i cili na lejon të luajmë lojë më të përshtatshme.
Meqenëse ky mësim ka të bëjë me kodimin e lojës në Micropython, në vend të sekuencës tradicionale hap pas hapi që kemi përdorur më parë për mësime të programimit grafik, ne do të kalojmë blloqe kod pas bllok-duke kaluar funksione të rëndësishme, klasa dhe kryesore lak. Kodin e plotë mund ta shkarkoni në depon e GitHub të këtij projekti. Mbërthehuni dhe fillojmë!
Furnizimet
TinkerGen BitPlayer
BBC Micro: pak
Hapi 1: Rrethi kryesor
Në këtë tutorial do të përdor shpesh fjalën "metodë". Një metodë në python është disi e ngjashme me një funksion, përveç se është e lidhur me objektin/klasat. Pra, për thjeshtim, mund ta lexoni si "një funksion brenda klasës". Mund të lexoni më shumë rreth metodave këtu.
Ne hyjmë në lakin kryesor me
ndërsa jo mbi lojë:
kusht. Brenda marrim numrin e pushtuesve, mundësinë e shfaqjes së tyre dhe numrin e nevojshëm për të arritur në nivelin tjetër nga fjalori i niveleve. Tjetra ne kontrollojmë lëvizjen majtas-djathtas me metodat e shembullit Listen_Dir të shembullit të klasës JoyStick. Nëse një nga kushtet vlerësohet si e vërtetë, ne rrisim/ulim vlerën x të karakterit tonë të luajtshëm. Ne e kufizojmë atë në [-2, 2] me dy kushte nëse. Pastaj fillojmë një shembull të klasës DisplayBuffer dhe kontrollojmë për shtypjet e butonave "mburojë" ose "plumb zjarri". Ne përdorim metodën DisplayBuffer.set () për të vendosur objekte për interpretim të mëvonshëm. Për dhënien e mburojës ne përdorim drejtpërdrejt DisplayBuffer.set (), por për plumbat dhe pushtuesit i shtojmë në listën e tyre përkatëse dhe i vendosim () një nga një në lak me kodin e mëposhtëm për interpretim të mëvonshëm me DispBuffer.render ():
për b në plumba: b. jep (dispBuf) për v në vaders: v. jep (dispBuf)
Të gjithë pushtuesit, plumbat dhe mburoja shfaqen një herë në çdo përsëritje të lakut kryesor
dispBuf.render ()
Para përfundimit të lakut kryesor ne kontrollojmë nëse ndonjë prej plumbave të pushtuesve ka arritur në fund të ekranit, dhe nëse janë, i fshijmë nga listat e tyre përkatëse.
Hapi 2: Xhojstik
BitPlayer është i lehtë për tu mbajtur dhe përdorur, me një levë me 2 boshte si kontrollorët Gameboy ose PSP, gjithashtu përfshin 6 butona të tjerë të programueshëm të etiketuar si L, R, A, B, C dhe D. Për një përvojë gjithëpërfshirëse dhe interaktive, BitPlayer në vetvete përmban një zile, një motor dridhjeje dhe një port Grove I2C për të lidhur pajisje shtesë shtesë si një ekran OLED.
Ne përdorim vetëm lëvizësin majtas-djathtas të levës për këtë lojë, për shembull të plotë në përdorimin e të gjithë butonave BitPlayer mund të shikoni në joystick_example.py në depon e GitHub të këtij projekti. Me krijimin e shembullit të klasës JoyStick ne kontrollojmë leximin e paracaktuar të boshtit X dhe e ruajmë atë vlerë në vetvete. Read_X. Pastaj në funksionin Listen_Dir, ne kontrollojmë nëse devijimi nga ajo vlerë e paracaktuar është më i lartë se ndryshorja e ndjeshmërisë (provoni ta rregulloni vetë, nëse mendoni se JoyStick është shumë e ndjeshme) dhe kthejmë True of False sipas drejtimit të zbuluar.
Le të hedhim një vështrim në shembullin konkret se si funksionon kjo:
Le të themi se leximi ynë i paracaktuar i boshtit X është 0. Pastaj, nëse lëvizim Joystick djathtas:
New_X = JoyStick_X.lexo_analog () #New_X = 200
Djathtas = E Re_X - vetja. Lexo_X #Djathtas = 200 Majtas = vetveten. Lexo_X - E Re_X #Majtas = -200
Pastaj kur kontrollojmë drejtimin:
Precision = 150if Djathtas> Precizion: #200> 150 Vërtetë Get_Rocker = DIR ['R'] elif Majtas> Precision: #-200> 150 False Get_Rocker = DIR ['L'] tjetër: Get_Rocker = DIR ['NONE'] nëse Dir == Get_Rocker: return True other: return False
Hapi 3: Shfaq tamponin
Klasa DisplayBuf është përgjegjëse për kontrollin e ekranit LED. Shtë bërë duke përdorur dy metoda, set () dhe render (). metoda set () ndryshon vlerat që korrespondojnë me pikselët e ekranit LED. Ju mund të mbani mend, se pikselët në ekranin Micro: bit LED mund të shprehen si varg ose një listë - "00000: 00000: 00000: 00000: 00000" është një ekran bosh. "00000: 00000: 00000: 00000: 00100" është një ekran me piksel të ndriçuar dobët në qendër të rreshtit të poshtëm.
00000:
00000
:00000
:00000:
00100"
Ky shënim mund të jetë më i lehtë për tu përpunuar:)
Pra, ajo që ne bëjmë gjatë lakut kryesor është metoda e thirrjes set () e DisplayBuf për të vendosur të gjitha objektet tona që duhet të shfaqen në ekran. Pastaj ne përdorim metodën render () për t'i treguar të gjithë në të njëjtën kohë në ekran.
Hapi 4: Pushtuesit, Plumbat dhe Lojtari
Plumbat dhe Pushtuesit i përkasin klasës Mover. Shembujt e klasës Mover kanë vendndodhjen dhe shpejtësinë e tyre x, y, si dhe shkëlqimin. Klasa Mover ka dy metoda shembullore, set () dhe move (). metoda set () thjesht thërret metodën DisplayBuf set () me koordinata të azhurnuara për t'i ruajtur për paraqitjen e mëvonshme në matricën LED. move () metoda e përditësimit të shembullit koordinon sipas shpejtësisë së shembullit - kjo vjen e dobishme më vonë, kur duhet të ndryshojmë shpejtësinë e pushtuesve me përparimin e niveleve.
Class Bullet dhe class Invader janë nënklasa të klasës Mover. Këtu ne përdorim diçka të quajtur trashëgimi. Funksionaliteti i super () na lejon të thërrasim metodat e superklasës në nënklasë, pa pasur nevojë të përsërisim kodin.
Hapi 5: Bëjeni tuajin
Urime! Sapo keni krijuar lojën klasike Space Invaders në Micro: pak me disa pajisje të lezetshme të lojrave. Sigurisht, ju mund të përmirësoni kodin e lojës nga këtu - për shembull, tani për tani, loja ka vetëm një nivel - mund të shtoni më sfidues. Gjithashtu, siç mund ta mbani mend, loja origjinale ka gurë që notojnë para lojtarit, të cilat mund t'i shtoni gjithashtu.
Nëse bëni një version të përmirësuar të lojës, ndajeni atë në komentet më poshtë! Për më shumë informacion mbi BitPlayer dhe pajisje të tjera për krijuesit dhe edukatorët STEM, vizitoni faqen tonë të internetit, https://tinkergen.com/ dhe regjistrohuni në gazetën tonë.
TinkerGen kohët e fundit ka krijuar një fushatë Kickstarter për MARK (Make A Robot Kit), një komplet robotësh për mësimin e kodimit, robotikës, AI!
Kodi origjinal Micropython nga hexkcd/micro-vaders, u ndryshua për të punuar me TinkerGen BitPlayer.
Recommended:
Paneli i lojrave i lëvizshëm Lego me pushtuesit hapësinorë: 4 hapa
Konsola Lego Portable e Lojërave me Pushtuesit e Hapësirës: A keni menduar ndonjëherë të jeni një zhvillues i lojërave dhe të ndërtoni tastierën tuaj të lojërave që mund të luani në lëvizje? Gjithçka që ju nevojitet është pak kohë, pajisjeLego bricksa Mini-Calliope (mund të porositeni në këtë faqe në internet https://calliope.cc/en) dhe disa aftësi
Anije elektronike hapësinore: 8 hapa (me fotografi)
Anija Elektronike Hapësinore: Kam bërë këtë projekt që lidh së bashku dy nga fushat e mia të preferuara: elektronike dhe hapësirë. Kjo anije kozmike është bërë tërësisht nga e para
Pushtuesit LCD: një pushtues hapësinorë si lojë në ekranin e karaktereve LCD 16x2: 7 hapa
LCD Invaders: një Pushtues Hapësirë Si Lojë në Ekranin e Karaktereve LCD 16x2: Nuk ka nevojë të prezantoni një lojë legjendare "Pushtuesit e Hapësirës". Karakteristika më interesante e këtij projekti është se përdor ekranin e tekstit për dalje grafike. Shtë arritur duke zbatuar 8 karaktere me porosi. Ju mund ta shkarkoni të plotë Arduino
Ekran TTGO (me ngjyra) Me Mikropiton (T-ekran T-T): 6 hapa
Ekran TTGO (me ngjyra) Me Micropython (TTGO T-ekran): TTGO T-Display është një tabelë e bazuar në ESP32 që përfshin një ekran me ngjyra 1.14 inç. Bordi mund të blihet për një çmim prej më pak se 7 $ (përfshirë transportin, çmimi i parë në banggood). Ky është një çmim i jashtëzakonshëm për një ESP32 përfshirë një ekran.
Llambadari Pushtuesit Hapësirë Me Shkëlqim në Errësirë Veprimi: 16 hapa (me fotografi)
Llambadar Space Invaders With Glow in the Dark Action: Përdorni modelim/printim 3D, akrilik të prerë me lazer, derdhje rrëshire, pigment reaktiv UV, LED dhe disa instalime elektrike të thjeshta për të bërë një llambadar ose llambë me stil të lartë dhe pushtues retro të ftohtë. Kam përfshirë një truk të bukur për të bërë qoshe të lakuara nga lazer cu