Агуулгын хүснэгт:
- Хангамж
- Алхам 1: Үндсэн гогцоо
- Алхам 2: Joystick
- Алхам 3: Дэлгэцийн буфер
- Алхам 4: Халдагч, сум, тоглогч
- Алхам 5: Үүнийг өөрийн болгох
Видео: Micropython дахь Space Invaders in Micro: bit: 5 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:01
Өмнөх нийтлэлүүдэд бид TinkerGen -ийн боловсруулсан GameGo зөөврийн чимэг тоглоомын консол дээр тоглоом бүтээх талаар судалж үзсэн. Бидний хийсэн тоглоомууд нь хуучин Nintendo тоглоомуудыг санагдуулдаг байсан. Өнөөдрийн нийтлэлд бид аркад тоглоомын алтан үе рүү ухрах алхам хийх гэж байна. Бид Space Invaders тоглоомыг Micropython дээр Micro: bit microcontroller дээр дахин бүтээх болно, мөн битийн хувьд бид BitPlayer Micro: bit өргөтгөлийг ашиглах бөгөөд энэ нь тоглоомыг илүү тохь тухтай тоглох боломжийг олгодог.
Энэхүү гарын авлага нь тоглоомыг Micropython дээр кодлохтой холбоотой бөгөөд өмнө нь график програмчлалын хичээлд ашигладаг уламжлалт үе шаттай дарааллын оронд бид кодын блокыг чухал блок, функц, ангиуд болон үндсэн хэсгүүдийг судлах болно. гогцоо. Та энэ төслийн GitHub репозитороос бүрэн кодыг татаж авах боломжтой. Тэврээд, эхэлцгээе!
Хангамж
TinkerGen BitPlayer
BBC Micro: жаахан
Алхам 1: Үндсэн гогцоо
Энэ гарын авлагад би "арга" гэсэн үгийг ихэвчлэн ашиглах болно. Питон дахь арга нь функцтэй төстэй боловч объект/ангиудтай холбоогүй болно. Тиймээс хялбарчлахын тулд та үүнийг "анги доторх функц" гэж уншиж болно. Та аргын талаар илүү ихийг эндээс уншиж болно.
Бид үндсэн давталтыг оруулна уу
game_over биш байхад:
нөхцөл. Дотор нь бид түрэмгийлэгчдийн тоо, тэдний гарч ирэх магадлал, түвшний толь бичгээс дараагийн түвшинд хүрэх шаардлагатай тоог олж авдаг. Дараа нь бид JoyStick ангийн жишээний Listen_Dir жишээ аргуудын тусламжтайгаар зүүнээс баруун тийш шилжих хөдөлгөөнийг шалгадаг. Хэрэв нөхцлүүдийн аль нэг нь Үнэн гэж үнэлэгдвэл бид тоглох боломжтой дүрийнхээ x-утгыг нэмэгдүүлж/бууруулдаг. Бид үүнийг хоёр нөхцөлтэйгээр [-2, 2] гэж хязгаарладаг. Дараа нь бид DisplayBuffer ангийн жишээг эхлүүлж, "бамбай" эсвэл "галын сум" товчлуур дарагдсан эсэхийг шалгана уу. Бид DisplayBuffer.set () аргыг ашиглан объектуудыг дараа нь үзүүлэх болно. Бамбайг гаргахын тулд бид DisplayBuffer.set () -ийг шууд ашигладаг, харин сум, халдагчдын хувьд тэдгээрийг тус тусын жагсаалтад нэмж, дараа нь DispBuffer.render () ашиглан үзүүлэхийн тулд дараах код бүхий давталтын дарааллаар () тохируулдаг.
b сумны хувьд: b.render (dispBuf) v in vaders: v.render (dispBuf)
Бүх түрэмгийлэгч, сум, бамбайг гол давталтын давталт бүрт нэг удаа дэлгэц дээр харуулдаг
dispBuf.render ()
Үндсэн давталт дуусахаас өмнө бид түрэмгийлэгчдийн сумны аль нэг нь дэлгэцийн төгсгөлд хүрсэн эсэхийг шалгаж, хэрэв байгаа бол тэдгээрийг тус тусын жагсаалтаас устгадаг.
Алхам 2: Joystick
BitPlayer-ийг барьж, ашиглахад хялбар бөгөөд Gameboy эсвэл PSP контроллер гэх мэт 2 тэнхлэгтэй джойстикийн хамт L, R, A, B, C, D гэсэн 6 програмчлагдах товчлуурыг багтаасан байдаг. өөрөө дуугаралт, чичиргээ мотор, OLED дэлгэц гэх мэт нэмэлт төхөөрөмжүүдийг холбох Grove I2C порттой.
Бид энэ тоглоомонд зөвхөн джойстикийн баруун зүүн талын рокерыг ашигладаг, жишээ нь BitPlayer-ийн бүх товчлуурыг ашиглахын тулд та энэ төслийн GitHub репозитороос joystick_example.py-ийг үзэх боломжтой. JoyStick классын жишээг үүсгэх үед бид X тэнхлэгийн анхдагч уншилтыг шалгаж, энэ утгыг өөртөө хадгалдаг. Read_X. Дараа нь Listen_Dir функц дээр бид анхдагч утгаас хазайлт нь мэдрэмтгий хувьсагчаас өндөр эсэхийг шалгадаг (хэрэв та JoyStick хэт мэдрэмтгий гэж бодож байвал өөрөө өөрчилж үзээрэй), илэрсэн чиглэлийн дагуу Үнэн худлыг буцаана.
Энэ нь хэрхэн ажилладаг талаар тодорхой жишээг авч үзье.
Бидний X тэнхлэгийн үндсэн утга 0 байна гэж бодъё. Дараа нь хэрэв бид Joystick-ийг зөв хөдөлгөвөл:
New_X = JoyStick_X.read_analog () #New_X = 200
Баруун = New_X - өөрөө. Read_X #Баруун = 200 Зүүн = өөрөө. Read_X - New_X #Зүүн = -200
Дараа нь бид чиглэлийг шалгах үед:
Precision = 150if Right> Precision: #200> 150 True Get_Rocker = DIR ['R'] elif Left> Precision: #-200> 150 False Get_Rocker = DIR ['L'] other: Get_Rocker = DIR ['NONE'] if Dir == Get_Rocker: return Үнэн өөр: буцах Худал
Алхам 3: Дэлгэцийн буфер
DisplayBuf анги нь LED дэлгэцийг хянах үүрэгтэй. Энэ нь set () ба render () гэсэн хоёр аргыг ашиглан хийгддэг. set () арга нь LED дэлгэцийн пикселтэй тохирох утгыг өөрчилдөг. Micro: bit LED дэлгэц дээрх пикселийг тэмдэгт мөр эсвэл жагсаалтаар илэрхийлж болохыг санаж байгаа байх - "00000: 00000: 00000: 00000: 00000" бол хоосон дэлгэц юм. "00000: 00000: 00000: 00000: 00100" нь доод эгнээний дунд бүдэг гэрэлтэй пиксел бүхий дэлгэц юм.
00000:
00000
:00000
:00000:
00100"
Энэ тэмдэглэгээг боловсруулахад илүү хялбар байж магадгүй:)
Тиймээс, үндсэн давталтын үед бидний хийдэг зүйл бол дэлгэц дээр харуулах шаардлагатай бүх объектуудыг тохируулах DisplayBuf -ийн call set () арга юм. Дараа нь бид бүгдийг нэгэн зэрэг дэлгэцэн дээр харуулахын тулд render () аргыг ашигладаг.
Алхам 4: Халдагч, сум, тоглогч
Сум болон довтлогчид нь Mover ангилалд багтдаг. Mover ангийн жишээ нь x, y байршил, хурд, гэрэлтүүлэгтэй байдаг. Mover класс нь set () ба move () гэсэн хоёр жишээтэй байдаг. set () арга нь DisplayBuf set () аргыг дуудаж, координатыг шинэчилж, дараа нь LED матриц дээр үзүүлэх болно. move () аргыг жишээ хурдын дагуу сольж өгдөг.
Class Bullet болон class Invader бол Mover ангиллын дэд анги юм. Энд бид удамшил гэдэг зүйлийг ашигладаг. Super () функц нь кодыг давтахгүйгээр дээд ангийн аргуудыг дэд ангилалд дуудах боломжийг бидэнд олгодог.
Алхам 5: Үүнийг өөрийн болгох
Баяр хүргэе! Та зүгээр л Micro: Bit дээр сонгодог Space Invaders тоглоомыг дахин бүтээсэн бөгөөд зарим гайхалтай тоглоомын тоног төхөөрөмжөөр бүтээсэн. Мэдээжийн хэрэг, та тоглоомын кодыг эндээс сайжруулах боломжтой - жишээлбэл, одоогоор тоглоом зөвхөн нэг түвшинтэй байгаа тул та илүү төвөгтэй зүйлийг нэмж болно. Түүнчлэн, санаж байгаа шиг анхны тоглоом нь тоглогчийн урд талд хөвж буй чулуутай бөгөөд үүнийг нэмж болно.
Хэрэв та тоглоомын сайжруулсан хувилбарыг хийвэл доорх сэтгэгдлээр хуваалцаарай! BitPlayer болон үйлдвэрлэгчид болон STEM сургагчдад зориулсан бусад тоног төхөөрөмжийн талаар дэлгэрэнгүй мэдээлэл авахыг хүсвэл манай вэбсайт https://tinkergen.com/ хаягаар орж манай мэдээллийн хуудсыг захиалаарай.
TinkerGen саяхан MARK (Make A Robot Kit), код бичих, робот техник, хиймэл оюун ухаанд заах роботын Kickstarter кампанит ажлыг бүтээжээ.
Hexkcd/micro-vaders-ийн анхны Micropython кодыг TinkerGen BitPlayer-тэй ажиллахаар өөрчилсөн.
Зөвлөмж болгож буй:
MODBUS RTU дахь үйлдвэрлэлийн HMI ба Arduinos: 4 алхам
MODBUS RTU дахь Industrial HMI ба Arduinos: Энэхүү зааварчилгаанд би үйлдвэрлэлийн HMI (COOLMAY MT6070H, 150EUROS), Arduino CLONE DIY (10EUROS) ба Arduino UNO (10EUROS) хоорондын харилцааны жишээг тайлбарлах болно. Сүлжээ нь тусгай, хүчирхэг, үйлдвэрлэлийн протоколоор ажиллах болно
LTspice дахь ЭКГ -ийн хэлхээ: 4 алхам
LTspice дахь ECG Circuitry: LTspice -ийг Mac эсвэл PC -ийн аль нэгэнд татаж аваарай. Энэ хувилбарыг mac дээр хийсэн
COVID-19-д зориулсан 20 дахь хоёр дахь гар угаах таймер: 6 алхам (зурагтай)
COVID-19-д зориулсан хоёр дахь гар угаах таймер: Дэлхий даяар COVID-19 тархах тусам бид нүүрээ бага багаар цуглуулж, гараа илүү олон удаа угааж өөрийгөө хамгаалах ёстой. гараа зөв угааж болохгүй. Гараа хэрхэн зөв угаах вэ? W
Space Invaders Clock (төсөвт!): 6 алхам (зурагтай)
Space Invaders Clock (төсөв дээр!): Саяхан би GeckoDiode -ийн гоёмсог хийцийг хараад шууд л өөрөө бүтээхийг хүссэн юм. Instructable бол Space Invaders Desktop Clock бөгөөд үүнийг уншаад үзэхийг танд зөвлөж байна.Төсөл нь бараг зөвхөн эх үүсвэрээс бүтсэн
Space Invaders -ийн харанхуйд гэрэлтэх лааны суурь: 16 алхам (зурагтай)
Space Invaders -ийн харанхуйд гэрэлтэх лааны суурь нь лааны суурь: 3D загварчлал/хэвлэх, нийлэг нийлэг, давирхай цутгах, хэт ягаан туяаны реактив пигмент, LED болон энгийн утас ашиглан өндөр хийц, чимэг сэрүүн орон зайд лааны суурь эсвэл дэнлүү хий. Би лазер цооногоос муруй булан хийх сайхан трик оруулсан