Съдържание:
- Консумативи
- Стъпка 1: Основен цикъл
- Стъпка 2: Джойстик
- Стъпка 3: Показване на буфер
- Стъпка 4: Нашественици, куршуми и играч
- Стъпка 5: Направете го сам
Видео: Space Invaders в Micropython на Micro: bit: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
В предишните си статии изследвахме създаването на игри на GameGo, преносима ретро игрална конзола, разработена от TinkerGen education. Игрите, които направихме, напомняха за старите игри на Nintendo. В днешната статия ще направим крачка назад, към златния век на аркадните игри. Ще пресъздадем играта Space Invaders в Micropython на Micro: bit микроконтролер - и като обрат, ще използваме и разширението BitPlayer Micro: bit, което ни позволява да играем играта по -удобно.
Тъй като този урок е за кодиране на играта в Micropython, вместо традиционната поетапна последователност, която използвахме преди за уроци по графично програмиране, ще преминем кодовия блок по блок-ще преминем през важни функции, класове и основните цикъл. Можете да изтеглите пълния код в хранилището на GitHub на този проект. Закопчайте се и започваме!
Консумативи
TinkerGen BitPlayer
BBC Micro: бит
Стъпка 1: Основен цикъл
В този урок ще използвам думата „метод“доста често. Методът в python е донякъде подобен на функция, освен че е свързан с обект/класове. Така че, за опростяване, можете да го прочетете като "функция в рамките на класа". Можете да прочетете повече за методите тук.
Влизаме в основния цикъл с
докато не е game_over:
състояние. Вътре получаваме броя на нашествениците, шанса за появата им и необходимия брой, за да стигнем до следващото ниво от речника на нивата. След това проверяваме за ляво-дясно движение с методите на Listen_Dir за екземпляра на класа JoyStick. Ако едно от условията се оценява като Истина, ние увеличаваме/намаляваме x-стойността на нашия играем герой. Ограничаваме го до [-2, 2] с две if условия. След това инициализираме екземпляр от клас DisplayBuffer и проверяваме за натискане на бутон "щит" или "огнена куршум". Използваме метода DisplayBuffer.set (), за да зададем обекти за по -късно изобразяване. За изобразяване на щита използваме DisplayBuffer.set () директно, но за куршуми и нашественици ги добавяме към съответния им списък и ги задаваме () един по един във цикъл for със следния код за по -късно изобразяване с DispBuffer.render ():
за b в куршуми: b.render (dispBuf) за v в vaders: v.render (dispBuf)
Всички нашественици, куршуми и щит се изобразяват веднъж на всеки основен цикъл с итерация с
dispBuf.render ()
Преди края на основния цикъл проверяваме дали някой от куршумите на нашественици е достигнал края на екрана и ако са, ги изтриваме от съответните им списъци.
Стъпка 2: Джойстик
BitPlayer е лесен за държане и използване, с 2-осен джойстик като Gameboy или PSP контролери, той включва и още 6 програмируеми бутона, обозначени като L, R, A, B, C и D. За потапящо и интерактивно изживяване, BitPlayer самата разполага със звуков сигнал, вибрационен двигател и Grove I2C порт за свързване на допълнителни периферни устройства като OLED дисплей.
Използваме само ляв-десен рокер на джойстика за тази игра, за пълен пример за използване на всички бутони на BitPlayer можете да разгледате joystick_example.py в хранилището на GitHub на този проект. При създаването на екземпляра на клас JoyStick проверяваме за четене по подразбиране на оста X и съхраняваме тази стойност в self. Read_X. След това във функция Listen_Dir проверяваме дали отклонението от тази стойност по подразбиране е по -високо от променливата на чувствителността (опитайте да я настроите сами, ако смятате, че JoyStick е твърде чувствителен) и връщаме True of False според откритата посока.
Нека да разгледаме конкретен пример за това как работи:
Да кажем, че нашето четене по оста X по подразбиране е 0. След това, ако преместим джойстика надясно:
New_X = JoyStick_X.read_analog () #New_X = 200
Вдясно = New_X - self. Read_X #Right = 200 Вляво = self. Read_X - New_X #Left = -200
След това, когато проверяваме посоката:
Precision = 150if Right> Precision: #200> 150 True Get_Rocker = DIR ['R'] elif Left> Precision: #-200> 150 False Get_Rocker = DIR ['L'] else: Get_Rocker = DIR ['NONE'] if Dir == Get_Rocker: return True else: return False
Стъпка 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"
Тази нотация може да бъде по -лесна за обработка:)
И така, това, което правим по време на основния цикъл, е методът call () на DisplayBuf, за да зададем всички наши обекти, които трябва да се показват на екрана. След това използваме метода render (), за да ги покажем всички едновременно на екрана.
Стъпка 4: Нашественици, куршуми и играч
Куршумите и нашествениците принадлежат към клас Mover. Екземплярите на клас Mover имат своите x, y местоположения и скорост, както и яркост. Класът Mover има два метода на екземпляр, set () и move (). методът set () просто извиква DisplayBuf метод set () с актуализирани координати, за да се запази за по -късно изобразяване на LED матрица. метода move () актуализира координатите на инстанцията според скоростта на екземпляра - това е полезно по -късно, когато трябва да променим скоростта на нашествениците с напредването на нивата.
Class Bullet и class Invader са подкласове на клас Mover. Тук използваме нещо, наречено наследяване. Функционалността на super () ни позволява да извикваме методи на суперкласа в подклас, без да е необходимо да повтаряме кода.
Стъпка 5: Направете го сам
Честито! Току-що пресъздадохте класическата игра Space Invaders на Micro: bit с готин хардуер за игри. Разбира се, можете да подобрите кода на играта оттук - например, засега играта има само едно ниво - можете да добавите още предизвикателни. Също така, както може би си спомняте, оригиналната игра има скали, плаващи пред плейъра, които също можете да добавите.
Ако все пак направите подобрена версия на играта, споделете я в коментарите по -долу! За повече информация относно BitPlayer и друг хардуер за създатели и преподаватели по STEM посетете нашия уебсайт https://tinkergen.com/ и се абонирайте за нашия бюлетин.
TinkerGen наскоро създаде Kickstarter кампания за MARK (Make A Robot Kit), робот комплект за преподаване на кодиране, роботика, AI!
Оригиналният код на Micropython от hexkcd/micro-vaders беше променен, за да работи с TinkerGen BitPlayer.
Препоръчано:
Как да стартирате серво мотори с помощта на Moto: bit с Micro: bit: 7 стъпки (със снимки)
Как да стартирате серводвигатели с помощта на Moto: bit С Micro: bit: Един от начините за разширяване на функционалността на micro: bit е да използвате дъска, наречена moto: bit от SparkFun Electronics (приблизително 15-20 долара). Изглежда сложно и има много функции, но не е трудно да стартирате серво мотори от него. Moto: bit ви позволява да
LCD Invaders: Space Invaders Like Game на 16x2 LCD дисплей със символи: 7 стъпки
LCD Invaders: Space Invaders Like Game на 16x2 LCD дисплей със символи: Няма нужда да въвеждате легендарна игра „Space Invaders“. Най -интересната характеристика на този проект е, че той използва текстов дисплей за графичен изход. Това се постига чрез внедряване на 8 персонализирани знака. Можете да изтеглите пълния Arduino
Micro: bit - Micro Drum Machine: 10 стъпки (със снимки)
Micro: bit - Micro Drum Machine: Това е micro: bit микро барабанна машина, която вместо просто да генерира звука, всъщност барабани. Той е тежък, вдъхновен от зайците от микро: бит оркестъра. Отне ми известно време да намеря някои соленоиди, които бяха лесни за използване с mocro: bit
Игра Space Space Race версия 2: 5 стъпки
Игра Space Space Race версия 2: Здравейте всички. Преди тази версия на играта публикувах първата версия на играта. Днес ı ще ви покажа Space Race Game версия 2. Нека разгледаме стъпките
Първи стъпки с Micro: bit: 6 стъпки (със снимки)
Първи стъпки с Micro: bit: Micro: bit е микроконтролер - малък компютър, който ви позволява да управлявате електрониката. Той съдържа много функции на малка електронна платка: сензор за акселерометър за откриване на движение, ъгъл и ускорение; сензор за магнитометър за откриване на магнит