Obsah:
- Zásoby
- Krok 1: Hlavná slučka
- Krok 2: Joystick
- Krok 3: Zobrazovacia vyrovnávacia pamäť
- Krok 4: Votrelci, guľky a hráč
- Krok 5: Prispôsobte si ho
Video: Vesmírni útočníci v Micropythone na Micro: bit: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
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
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
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äť
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áč
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
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:
BBC Micro: bit and scratch - interaktívny volant a hra pre vodiča: 5 krokov (s obrázkami)
BBC Micro: bit and Scratch - interaktívny volant a hra pre vodičov: Jednou z mojich úloh v tomto týždni je použiť BBC Micro: bit na prepojenie s programom Scratch, ktorý sme napísali. Myslel som si, že to bola ideálna príležitosť použiť môj ThreadBoard na vytvorenie vstavaného systému! Moja inšpirácia pre nulové p
Ako spustiť servomotory pomocou Moto: bit s Micro: bit: 7 krokov (s obrázkami)
Ako spustiť servomotory pomocou Moto: bit s Micro: bit: Jeden zo spôsobov, ako rozšíriť funkčnosť micro: bit, je použiť dosku s názvom moto: bit od SparkFun Electronics (približne 15-20 dolárov). Vyzerá to komplikovane a má veľa funkcií, ale nie je ťažké z neho spustiť servomotory. Moto: bit vám umožňuje
Micro: Bot - Micro: Bit: 20 krokov
Micro: Bot - Micro: Bit: Postavte si mikro: Bot! Jedná sa o mikro: bitom riadený robot so vstavaným sonarom na autonómne riadenie, alebo ak máte dva mikro: bity, rádiom riadené riadenie
LCD Invaders: Vesmírni útočníci ako hra na 16x2 LCD znakovom displeji: 7 krokov
LCD Invaders: Space Invaders Like Game na 16x2 LCD znakovom displeji: Legendárnu hru „Space Invaders“nie je potrebné predstavovať. Najzaujímavejšou črtou tohto projektu je, že na grafické výstupy používa zobrazenie textu. To sa dosiahne implementáciou 8 vlastných znakov. Môžete si stiahnuť kompletný Arduino
Merania svetla a farieb pomocou Pimoroni Enviro: bit pre mikro: bit: 5 krokov
Merania svetla a farieb S Pimoroni Enviro: bit pre Micro: bit: Pracoval som na niektorých zariadeniach, ktoré predtým umožňovali meranie svetla a farieb a veľa o teórii za takýmito meraniami nájdete inštrukcie tu a tu. nedávno vydalo enviro: bit, doplnok pre m