Satura rādītājs:
- Piegādes
- 1. darbība: galvenā cilpa
- 2. solis: kursorsvira
- 3. darbība: parādiet buferi
- 4. solis: iebrucēji, lodes un spēlētājs
- 5. darbība. Padariet to par savu
Video: Kosmosa iebrucēji Micropython on Micro: bits: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:53
Iepriekšējos rakstos mēs esam izpētījuši spēļu veidošanu GameGo - pārnēsājamā retro spēļu konsolē, ko izstrādājusi TinkerGen izglītība. Mūsu izveidotās spēles atgādināja vecās Nintendo spēles. Šodienas rakstā mēs spersim soli atpakaļ, līdz arkādes spēļu zelta laikmetam. Mēs atkārtoti izveidosim Space Invaders spēli Micropython uz Micro: bit mikrokontrollera - un kā pagriezienu mēs izmantosim arī BitPlayer Micro: bit paplašinājumu, kas ļauj mums spēlēt spēli ērtāk.
Tā kā šī apmācība ir par spēles kodēšanu programmā Micropython, tā vietā, lai tradicionālās secīgās secības secības, ko iepriekš izmantojām grafiskās programmēšanas apmācības, vietā, mēs pa blokiem apskatīsim kodu-apskatīsim svarīgās funkcijas, klases un galvenos cilpa. Pilnu kodu varat lejupielādēt šī projekta GitHub krātuvē. Piesprādzējiet un sāksim!
Piegādes
TinkerGen BitPlayer
BBC Micro: mazliet
1. darbība: galvenā cilpa
Šajā apmācībā es diezgan bieži lietošu vārdu "metode". Metode python ir nedaudz līdzīga funkcijai, izņemot to, ka tā ir saistīta ar objektu/klasēm. Vienkāršības labad varat to izlasīt kā “funkciju klasē”. Vairāk par metodēm varat lasīt šeit.
Mēs ieejam galvenajā cilpā ar
kamēr nav game_over:
stāvoklis. Iekšpusē mēs iegūstam iebrucēju skaitu, viņu parādīšanās iespēju un vajadzīgo skaitu, lai nokļūtu nākamajā līmenī no līmeņu vārdnīcas. Tālāk mēs pārbaudām kustību pa kreisi-labo, izmantojot klases instances JoyStick Listen_Dir instanču metodes. Ja kāds no nosacījumiem tiek novērtēts kā Patiess, mēs palielinām/samazinām mūsu spēlējamā rakstura x vērtību. Mēs to ierobežojam līdz [-2, 2] ar diviem nosacījumiem. Pēc tam mēs inicializējam DisplayBuffer klases gadījumu un pārbaudām, vai nav nospiesti pogas "vairogs" vai "uguns aizzīme". Mēs izmantojam metodi DisplayBuffer.set (), lai iestatītu objektus vēlākai atveidošanai. Vairoga atveidošanai mēs tieši izmantojam DisplayBuffer.set (), bet aizzīmēm un iebrucējiem mēs pievienojam tos attiecīgajam sarakstam un iestatām () tos pa vienam cilpai ar šādu kodu vēlākai renderēšanai ar DispBuffer.render ():
b aizzīmēm: b.render (dispBuf) v vaders: v.render (dispBuf)
Visi iebrucēji, lodes un vairogs tiek parādīti displejā reizi galvenajā cilpas atkārtojumā ar
dispBuf.render ()
Pirms galvenās cilpas beigām mēs pārbaudām, vai kāda no iebrucēju lodēm ir sasniegusi ekrāna beigas, un, ja tā ir, mēs izdzēšam tās no attiecīgajiem sarakstiem.
2. solis: kursorsvira
BitPlayer ir viegli turēt un lietot, izmantojot 2 asu kursorsviru, piemēram, Gameboy vai PSP kontrolierus, tajā ir arī vēl 6 programmējamas pogas, kas apzīmētas kā L, R, A, B, C un D. Lai iegūtu aizraujošu un interaktīvu pieredzi, BitPlayer tai ir skaņas signāls, vibrācijas motors un Grove I2C ports, lai savienotu papildu perifērijas ierīces, piemēram, OLED displeju.
Šai spēlei mēs izmantojam tikai kursorsviras kreiso un labo sviru, lai iegūtu pilnu piemēru par visu BitPlayer pogu izmantošanu, šī projekta GitHub krātuvē varat apskatīt joystick_example.py. Veidojot JoyStick klases eksemplāru, mēs pārbaudām, vai nav X ass noklusējuma nolasījuma, un saglabājam šo vērtību sevī. Read_X. Pēc tam funkcijā Listen_Dir mēs pārbaudām, vai novirze no šīs noklusējuma vērtības ir augstāka par jutības mainīgo (mēģiniet to pielāgot pats, ja uzskatāt, ka JoyStick ir pārāk jutīga), un atgriežam True of False saskaņā ar noteikto virzienu.
Apskatīsim konkrētu piemēru, kā tas darbojas:
Pieņemsim, ka mūsu noklusējuma X ass rādījums ir 0. Tad, ja mēs pārvietojam kursorsviru pa labi:
New_X = JoyStick_X.read_analog () #New_X = 200
Pa labi = New_X - self. Read_X #Right = 200 Left = self. Read_X - New_X #Left = -200
Tad, kad mēs pārbaudām virzienu:
Precizitāte = 150if Pa labi> Precizitāte: #200> 150 True Get_Rocker = DIR ['R'] elif Pa kreisi> Precizitāte: #-200> 150 False Get_Rocker = DIR ['L'] cits: Get_Rocker = DIR ['NONE'], ja Režisors == Get_Rocker: atgriezties True else: return False
3. darbība: parādiet buferi
DisplayBuf klase ir atbildīga par LED ekrāna vadību. Tas tiek darīts, izmantojot divas metodes set () un render (). set () metode maina vērtības, kas atbilst LED ekrāna pikseļiem. Jūs varētu atcerēties, ka Micro: bit LED ekrāna pikseļus var izteikt kā virkni vai sarakstu - "00000: 00000: 00000: 00000: 00000" ir tukšs ekrāns. "00000: 00000: 00000: 00000: 00100" ir ekrāns ar vāji apgaismotu pikseļu apakšējās rindas centrā.
00000:
00000
:00000
:00000:
00100"
Šo apzīmējumu varētu būt vieglāk apstrādāt:)
Tātad galvenās cilpas laikā mēs darām DisplayBuf metodi call set (), lai iestatītu visus objektus, kas jāparāda ekrānā. Tad mēs izmantojam metodi render (), lai tos visus vienlaikus parādītu ekrānā.
4. solis: iebrucēji, lodes un spēlētājs
Lodes un iebrucēji pieder Mover klasei. Mover klases instancēm ir savas x, y vietas un ātrums, kā arī spilgtums. Mover klasei ir divas instanču metodes set () un move (). set () metode vienkārši izsauc DisplayBuf set () metodi ar atjauninātām koordinātām, lai saglabātu vēlākai renderēšanai uz LED matricas. move () metode atjaunina instances koordinātu atbilstoši instances ātrumam - tas noderēs vēlāk, kad, mainoties līmeņiem, mums jāmaina iebrucēju ātrums.
Class Bullet un class Invader ir Mover klases apakšklases. Šeit mēs izmantojam kaut ko, ko sauc par mantojumu. Super () funkcionalitāte ļauj mums izsaukt virsklases metodes apakšklasē, neatkārtojot kodu.
5. darbība. Padariet to par savu
Apsveicam! Jūs tikko no jauna izveidojāt klasisko Space Invaders spēli vietnē Micro: bit, izmantojot lielisku spēļu aparatūru. Protams, jūs varētu uzlabot spēles kodu no šejienes - piemēram, šobrīd spēlei ir tikai viens līmenis - varat pievienot sarežģītākus. Tāpat, kā jūs varētu atcerēties, sākotnējā spēlē spēlētāja priekšā peld akmeņi, kurus varat arī pievienot.
Ja jūs izveidojat uzlabotu spēles versiju, kopīgojiet to komentāros zemāk! Lai iegūtu vairāk informācijas par BitPlayer un citu aparatūru ražotājiem un STEM pedagogiem, apmeklējiet mūsu vietni https://tinkergen.com/ un abonējiet mūsu biļetenu.
TinkerGen nesen izveidoja Kickstarter kampaņu MARK (Make A Robot Kit) - robotu komplektu kodēšanas, robotikas, AI mācīšanai!
Sākotnējais Micropython kods no hexkcd/micro-vaders tika mainīts, lai tas darbotos ar TinkerGen BitPlayer.
Ieteicams:
Izveidojiet kosmosa staciju TinkerCad Codeblock -- Vienkārša apmācība: 7 soļi (ar attēliem)
Izveidojiet kosmosa staciju TinkerCad Codeblock || Vienkārša apmācība: Lai gan doma par dzīvošanu kosmosā var šķist zinātniskā fantastika, to lasot, Starptautiskā kosmosa stacija riņķo ap zemi ar ātrumu piecas jūdzes sekundē un vienu reizi riņķo ap zemi. ik pēc 90 minūtēm. Šajā projektā jūs uzzināsit
Arduino kosmosa kuģa saskarne: 3 soļi
Arduino kosmosa kuģa saskarne: Hi Instructable kopiena, šoreiz esmu izstrādājis vienu no vienkāršākajiem projektiem, ko pabeigt ar Arduino Uno: kosmosa kuģa ķēdi. Tas ir tā sauktais, jo tas ir tāds programmēšanas un shēmas veids, kas tiktu izmantots agrīnās zinātniskās fantastikas TV šovos un filmās
Lego pārnēsājamā spēļu konsole ar kosmosa iebrucējiem: 4 soļi
Lego pārnēsājamā spēļu konsole ar kosmosa iebrucējiem: Vai esat kādreiz domājuši kļūt par spēļu izstrādātāju un izveidot savu spēļu konsoli, kuru varat spēlēt, atrodoties ceļā? Viss, kas Jums nepieciešams, ir mazliet laika, aparatūraLego bricksa Mini-Calliope (var pasūtīt šajā vietnē https://calliope.cc/en)un dažas prasmes
LCD iebrucēji: kosmosa iebrucējiem līdzīga spēle 16x2 LCD rakstzīmju displejā: 7 soļi
LCD iebrucēji: kosmosa iebrucējiem līdzīga spēle 16x2 LCD rakstzīmju displejā: nav nepieciešams ieviest leģendāro “Space Invaders” spēli. Šī projekta interesantākā iezīme ir tā, ka grafiskajai izvadei tiek izmantots teksta displejs. Tas tiek panākts, ieviešot 8 pielāgotas rakstzīmes. Jūs varat lejupielādēt pilnu Arduino
Uzlabojiet kosmosa palaišanu, izmantojot Kerbal kosmosa programmas fizisko izvietošanas pogu: 6 soļi
Uzlabojiet kosmosa palaišanu, izmantojot Kerbal kosmosa programmas fizisko izvietošanas pogu: Es nesen paņēmu Kerbal kosmosa programmas demonstrācijas versiju. Kerbala kosmosa programma ir simulatora spēle, kas ļauj izstrādāt un palaist raķetes un virzīties uz tāliem pavadoņiem un planētām. Es joprojām cenšos veiksmīgi nolaisties uz Mēness (o