Përmbajtje:

Pushtuesit hapësinorë në Mikropiton në Mikro: bit: 5 hapa
Pushtuesit hapësinorë në Mikropiton në Mikro: bit: 5 hapa

Video: Pushtuesit hapësinorë në Mikropiton në Mikro: bit: 5 hapa

Video: Pushtuesit hapësinorë në Mikropiton në Mikro: bit: 5 hapa
Video: Последните ДУМИ на Стивън Хокинг са ИЗУМИЛИ Света 2024, Nëntor
Anonim
Image
Image

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

Xhojstik
Xhojstik

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

Xhojstik
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

Shfaq tampon
Shfaq tampon

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

Pushtuesit, plumbat dhe lojtari
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

Bëjeni tuajin
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: