Mundarija:

Micropython -da Micro -da kosmik bosqinchilar: bit: 5 qadam
Micropython -da Micro -da kosmik bosqinchilar: bit: 5 qadam

Video: Micropython -da Micro -da kosmik bosqinchilar: bit: 5 qadam

Video: Micropython -da Micro -da kosmik bosqinchilar: bit: 5 qadam
Video: Урок 1. MicroPython Windows. Установка и настройка IDE. 2024, Iyul
Anonim
Image
Image

Oldingi maqolalarimizda biz TinkerGen ta'limi tomonidan ishlab chiqilgan, portativ retro o'yin konsoli GameGo -da o'yin yaratishni o'rganganmiz. Biz qilgan o'yinlar eski Nintendo o'yinlarini eslatardi. Bugungi maqolada, biz orqaga qadam tashlaymiz, arkada o'yinlarining oltin asriga. Biz Micropython -da Micro: bit microcontroller -da Space Invaders o'yinini qayta yaratamiz va burilish sifatida biz BitPlayer Micro: bit kengaytmasidan foydalanamiz, bu bizga o'yinni yanada qulayroq o'ynashga imkon beradi.

Ushbu qo'llanma o'yinni Micropython-da kodlash haqida bo'lgani uchun, biz grafik dasturlash darslari uchun ishlatilgan an'anaviy bosqichma-bosqich ketma-ketlik o'rniga, biz bloklar bo'yicha kod blokini o'tamiz-muhim funktsiyalarni, sinflarni va asosiyni o'tamiz. pastadir. Siz to'liq kodni ushbu loyihaning GitHub omboridan yuklab olishingiz mumkin. Qoplamang va boshlaylik!

Ta'minotlar

TinkerGen BitPlayer

BBC Micro: bit

1 -qadam: Asosiy halqa

Joystick
Joystick

Ushbu qo'llanmada men "usul" so'zini tez -tez ishlataman. Pythondagi usul, funktsiyaga biroz o'xshaydi, faqat u ob'ekt/sinflar bilan bog'liq. Shunday qilib, soddalashtirish uchun siz uni "sinf ichidagi funktsiya" sifatida o'qishingiz mumkin. Siz bu erda usullar haqida ko'proq o'qishingiz mumkin.

Biz asosiy halqa bilan kiramiz

game_over bo'lmaganida:

shart. Ichkarida biz bosqinchilar sonini, ularning paydo bo'lish ehtimolini va darajalar lug'atidan keyingi bosqichga o'tish uchun zarur bo'lgan sonni olamiz. Keyin biz JoyStick sinfining Listen_Dir misol usullari yordamida chapdan o'ngga harakatni tekshiramiz. Agar shartlardan biri "True" deb baholansa, biz o'ynaydigan xarakterimizning x-qiymatini oshiramiz/kamaytiramiz. Biz uni ikkita shart bilan [-2, 2] ga cheklaymiz. Keyin biz DisplayBuffer sinfining namunasini ishga tushiramiz va "qalqon" yoki "o't o'qi" tugmachalarini bosilishini tekshiramiz. Ob'ektlarni keyinchalik ko'rsatish uchun DisplayBuffer.set () usulidan foydalanamiz. Qalqonni ko'rsatish uchun biz to'g'ridan -to'g'ri DisplayBuffer.set () dan foydalanamiz, lekin o'qlar va bosqinchilar uchun biz ularni tegishli ro'yxatga qo'shamiz va DispBuffer.render () bilan keyinchalik ko'rsatish uchun quyidagi kod bilan ularni birma -bir pastadir qilib o'rnatamiz:

o'qlar uchun b uchun: b.render (dispBuf) v vaderlar uchun: v.render (dispBuf)

Hamma bosqinchilar, o'qlar va qalqonlar har bir asosiy ko'chadan iteratsiya bilan bir marta ko'rsatiladi

dispBuf.render ()

Asosiy tsikl tugashidan oldin biz bosqinchilar o'qlaridan birortasi ekran oxirigacha etib kelganini tekshiramiz va agar shunday bo'lsa, biz ularni tegishli ro'yxatidan o'chirib tashlaymiz.

2 -qadam: Joystick

Joystick
Joystick

BitPlayer-ni ushlab turish va ishlatish oson, Gameboy yoki PSP kontrollerlari kabi 2 o'qli joystik bilan, shuningdek, L, R, A, B, C va D deb belgilangan 6 ta programlanadigan tugmachani o'z ichiga oladi. o'zi OLED -displey kabi qo'shimcha qurilmalarni ulash uchun ovozli signal, tebranish dvigateli va Grove I2C portiga ega.

Biz bu o'yin uchun faqat joystikning chap-o'ng rokchisidan foydalanamiz, masalan BitPlayer-ning barcha tugmalaridan foydalanish uchun siz ushbu loyihaning GitHub omboridan joystick_example.py-ni ko'rishingiz mumkin. JoyStick sinfini yaratishda biz X o'qining standart o'qilishini tekshiramiz va bu qiymatni o'zimizda saqlaymiz. Read_X. Keyin Listen_Dir funktsiyasida biz bu standart qiymatdan chetga chiqish sezuvchanlik o'zgaruvchisidan yuqori ekanligini tekshiramiz (agar siz buni JoyStick juda sezgir deb hisoblasangiz, uni to'g'rilashga harakat qiling) va aniq bo'lgan yo'nalish bo'yicha "False True" ni qaytaring.

Keling, bu qanday ishlashining aniq misolini ko'rib chiqaylik:

Aytaylik, bizning X o'qi bo'yicha o'qishimiz 0 ga teng. Keyin, agar biz Joystikni o'ngga siljitsak:

New_X = JoyStick_X.read_analog () #New_X = 200

O'ng = Yangi_X - o'zini. O'qish_X #O'ng = 200 Chap = o'zini. O'qish_X - Yangi_X #Chap = -200

Keyin biz yo'nalishni tekshirganimizda:

Precision = 150if o'ng> Aniqlik: #200> 150 True Get_Rocker = DIR ['R'] elif Chap> Aniqlik: #-200> 150 False Get_Rocker = DIR ['L'] boshqa: Get_Rocker = DIR ['NONE'] if Dir == Get_Rocker: qaytish To'g'ri boshqasi: noto'g'ri qaytarish

3 -qadam: Buferni ko'rsatish

Displey buferi
Displey buferi

DisplayBuf klassi LED displeyni boshqarish uchun javobgardir. Bu ikkita usul yordamida amalga oshiriladi, set () va render (). set () usuli LED displey piksellariga mos keladigan qiymatlarni o'zgartiradi. Esingizda bo'lsa, Micro: bitli LED displeyidagi piksellar qator yoki ro'yxat bilan ifodalanishi mumkin - "00000: 00000: 00000: 00000: 00000" - bo'sh ekran. "00000: 00000: 00000: 00000: 00100" - pastki qatorning markazida xira yoritilgan pikselli ekran.

00000:

00000

:00000

:00000:

00100"

Bu belgini qayta ishlash osonroq bo'lishi mumkin:)

Shunday qilib, asosiy tsikl davomida nima qilsak, DisplayBuf -ning call set () usuli ekranda ko'rsatilishi kerak bo'lgan barcha ob'ektlarimizni sozlashdir. Keyin biz bir vaqtning o'zida ularning barchasini ekranda ko'rsatish uchun render () usulidan foydalanamiz.

4 -qadam: bosqinchilar, o'qlar va o'yinchi

Bosqinchilar, o'qlar va o'yinchi
Bosqinchilar, o'qlar va o'yinchi

O'qlar va bosqinchilar Mover sinfiga tegishli. Mover sinfining misollari x, y joylashuvi va tezligi, shuningdek yorqinligi. Mover sinfida set () va move () ikkita misol usullari mavjud. set () usuli shunchaki LED matritsasida ko'rsatish uchun saqlash uchun yangilangan koordinatali DisplayBuf set () usulini chaqiradi. move () usulini misol koordinatalarini misol tezligiga qarab yangilaydi - bu keyinchalik, bosqinchilar tezligini darajalar oshishi bilan o'zgartirish zarur bo'lganda keladi.

Class Bullet va Class Invader - bu Mover sinfining kichik sinflari. Bu erda biz meros degan narsadan foydalanamiz. Super () funktsiyasi bizga yuqori sinf usullarini kodni takrorlamasdan chaqirish imkonini beradi.

5 -qadam: Buni o'zingiz qiling

Buni o'zingiz qiling
Buni o'zingiz qiling

Tabriklaymiz! Siz shunchaki "Space Invaders" klassik o'yinini Micro: bit-da ajoyib o'yin uskunalari bilan qayta yaratdingiz. Albatta, siz bu erdan o'yin kodini yaxshilashingiz mumkin - masalan, hozircha o'yin faqat bitta darajaga ega - siz undan murakkablarini qo'shishingiz mumkin. Bundan tashqari, esingizda bo'lgandek, asl o'yinda o'yinchi oldida toshlar suzib yuradi, uni siz ham qo'shishingiz mumkin.

Agar siz o'yinning takomillashtirilgan versiyasini yaratgan bo'lsangiz, uni quyidagi izohlarda baham ko'ring! BitPlayer va ishlab chiqaruvchilar va STEM o'qituvchilari uchun boshqa uskunalar haqida ko'proq ma'lumot olish uchun bizning veb -saytimizga tashrif buyuring, https://tinkergen.com/ va bizning axborot byulletenimizga obuna bo'ling.

TinkerGen yaqinda MARK (Make A Robot Kit) uchun Kickstarter kampaniyasini yaratdi, bu kodlash, robototexnika, sun'iy intellektni o'rgatish uchun robot to'plami!

Hexkcd/micro-vaders-dan olingan Micropython kodi TinkerGen BitPlayer bilan ishlashga o'zgartirildi.

Tavsiya: