Obsah:

Vesmírni útočníci v Micropythone na Micro: bit: 5 krokov
Vesmírni útočníci v Micropythone na Micro: bit: 5 krokov

Video: Vesmírni útočníci v Micropythone na Micro: bit: 5 krokov

Video: Vesmírni útočníci v Micropythone na Micro: bit: 5 krokov
Video: Arkanoid vs Space Invaders – Launch Trailer 2024, Júl
Anonim
Image
Image

V našich predchádzajúcich článkoch sme skúmali tvorbu hier na GameGo, prenosnej retro hernej konzole vyvinutej spoločnosťou TinkerGen education. Hry, ktoré sme vyrobili, pripomínali staré hry Nintendo. V dnešnom článku sa vrátime o krok späť, do zlatého veku arkádových hier. Hru Space Invaders v Micropythone znova vytvoríme na mikro: bitovom mikrokontroléri - a ako Twist použijeme aj rozšírenie BitPlayer Micro: bit, ktoré nám umožní hrať hru pohodlnejšie.

Pretože tento tutoriál je o kódovaní hry v Micropythone, namiesto tradičnej postupnosti po etapách, ktorú sme predtým používali pri cvičných programoch grafického programovania, prejdeme kód po bloku-prejdeme si dôležité funkcie, triedy a hlavné slučka. Celý kód si môžete stiahnuť v úložisku GitHub tohto projektu. Pripútajte sa a môžeme začať!

Zásoby

TinkerGen BitPlayer

BBC Micro: bit

Krok 1: Hlavná slučka

Joystick
Joystick

V tomto návode budem dosť často používať slovnú „metódu“. Metóda v pythone je do istej miery podobná funkcii, ibaže je spojená s objektom/triedami. Pre zjednodušenie to teda môžete čítať ako „funkciu v rámci triedy“. Viac o metódach si môžete prečítať tu.

Do hlavnej slučky vstupujeme pomocou

keď nie je hra:

podmienkou. Vnútri dostaneme počet útočníkov, šancu na ich objavenie a počet potrebný na to, aby sme sa dostali zo slovníka úrovní na ďalšiu úroveň. Ďalej skontrolujeme pohyb vľavo-vpravo pomocou inštančných metód Listen_Dir inštancie triedy JoyStick. Ak je jedna z podmienok vyhodnotená ako True, zvýšime/znížime hodnotu x našej hrateľnej postavy. Obmedzíme ho na [-2, 2] dvoma podmienkami if. Potom inicializujeme inštanciu triedy DisplayBuffer a skontrolujeme, či nie sú stlačené tlačidlá „štít“alebo „požiarna strela“. Na nastavenie objektov na neskoršie vykreslenie používame metódu DisplayBuffer.set (). Na vykreslenie štítu používame priamo DisplayBuffer.set (), ale pre odrážky a útočníkov ich pridáme do ich príslušného zoznamu a nastavíme ich () jeden po druhom v slučke for s nasledujúcim kódom pre neskoršie vykreslenie pomocou DispBuffer.render ():

pre b v odrážkach: b.render (dispBuf) pre v in vaders: v.render (dispBuf)

Všetci útočníci, guľky a štít sa zobrazia na displeji pri každej iterácii hlavnej slučky s

dispBuf.render ()

Pred koncom hlavnej slučky skontrolujeme, či sa niektorá z guľiek útočníkov dostala na koniec obrazovky, a ak sú, odstránime ich z príslušných zoznamov.

Krok 2: Joystick

Joystick
Joystick

BitPlayer sa ľahko drží a používa, s 2-osovým joystickom, akým sú ovládače Gameboy alebo PSP, obsahuje tiež ďalších 6 programovateľných tlačidiel označených ako L, R, A, B, C a D. Pre pohlcujúci a interaktívny zážitok ponúka BitPlayer samotný je vybavený bzučiakom, vibračným motorom a portom Grove I2C na pripojenie ďalších periférnych zariadení, ako je napríklad OLED displej.

V tejto hre používame iba ľavý a pravý kolískový ovládač, napríklad pri použití všetkých tlačidiel BitPlayer sa môžete pozrieť na joystick_example.py v úložisku GitHub tohto projektu. Pri vytváraní inštancie triedy JoyStick skontrolujeme predvolené čítanie osi X a uložíme túto hodnotu do súboru self. Read_X. Potom vo funkcii Listen_Dir skontrolujeme, či odchýlka od tejto predvolenej hodnoty je vyššia ako premenná citlivosti (skúste to vyladiť sami, ak máte pocit, že JoyStick je príliš citlivý) a vráťte True of False podľa zisteného smeru.

Pozrime sa na konkrétny príklad, ako to funguje:

Povedzme, že naše predvolené čítanie v osi X je 0. Potom, ak pohneme joystickom doprava:

New_X = JoyStick_X.read_analog () #New_X = 200

Vpravo = New_X - self. Read_X #Right = 200 Vľavo = self. Read_X - New_X #Left = -200

Potom, keď skontrolujeme smer:

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

Krok 3: Zobrazovacia vyrovnávacia pamäť

Vyrovnávacia pamäť displeja
Vyrovnávacia pamäť displeja

Trieda DisplayBuf je zodpovedná za ovládanie LED obrazovky. Vykonáva sa pomocou dvoch metód, set () a render (). metóda set () mení hodnoty zodpovedajúce pixelom obrazovky LED. Môžete si pamätať, že pixely na mikro: bitovej LED obrazovke môžu byť vyjadrené ako reťazec alebo zoznam - „00000: 00000: 00000: 00000: 00000“je prázdna obrazovka. „00000: 00000: 00000: 00000: 00100“je obrazovka so slabo osvetleným pixelom v strede dolného radu.

00000:

00000

:00000

:00000:

00100"

Tento zápis by mohol byť jednoduchšie na spracovanie:)

To, čo robíme počas hlavnej slučky, je metóda call set () DisplayBufu na nastavenie všetkých našich objektov, ktoré je potrebné zobraziť na obrazovke. Potom použijeme metódu render (), aby sme ich všetky súčasne zobrazili na obrazovke.

Krok 4: Votrelci, guľky a hráč

Votrelci, guľky a hráč
Votrelci, guľky a hráč

Guľky a Votrelci patria do triedy Mover. Inštancie triedy Mover majú svoje polohy x, y a rýchlosť, ako aj jas. Trieda Mover má dve inštančné metódy, set () a move (). metóda set () jednoducho zavolá metódu DisplayBuf set () s aktualizovanými súradnicami na uloženie pre neskoršie vykreslenie na matici LED. metóda move () aktualizuje súradnicu inštancie podľa rýchlosti inštancie - to príde vhod neskôr, keď potrebujeme s postupom úrovní meniť rýchlosť útočníkov.

Class Bullet a Class Invader sú podtriedy triedy Mover. Tu používame niečo, čo sa nazýva dedičnosť. Funkčnosť super () nám umožňuje volať metódy nadtriedy v podtriede bez nutnosti opakovania kódu.

Krok 5: Prispôsobte si ho

Prispôsobte si ho
Prispôsobte si ho

Gratulujem Práve ste znova vytvorili klasickú hru Space Invaders na Micro: bit s úžasným herným hardvérom. Odtiaľto môžete samozrejme vylepšiť herný kód - napríklad hra má odteraz iba jednu úroveň - môžete pridať náročnejšie. Ako si možno pamätáte, v pôvodnej hre sa pred prehrávačom vznášajú kamene, ktoré môžete tiež pridať.

Ak vytvoríte vylepšenú verziu hry, podeľte sa o ňu v nižšie uvedených komentároch! Viac informácií o BitPlayeri a inom hardvéri pre výrobcov a pedagógov STEM nájdete na našej webovej stránke https://tinkergen.com/ a prihláste sa k odberu nášho spravodajcu.

TinkerGen nedávno vytvorila kampaň Kickstarter pre MARK (Make A Robot Kit), robotickú súpravu na výučbu kódovania, robotiky, AI!

Pôvodný kód Micropython z hexkcd/micro-vaders bol zmenený tak, aby fungoval s TinkerGen BitPlayer.

Odporúča: