Orodha ya maudhui:

Wavamizi wa nafasi katika Micropython kwenye Micro: bit: 5 Steps
Wavamizi wa nafasi katika Micropython kwenye Micro: bit: 5 Steps

Video: Wavamizi wa nafasi katika Micropython kwenye Micro: bit: 5 Steps

Video: Wavamizi wa nafasi katika Micropython kwenye Micro: bit: 5 Steps
Video: Python básico - lección 9 - Minecraft Education 2024, Novemba
Anonim
Image
Image

Katika nakala zetu zilizopita tumechunguza utengenezaji wa mchezo kwenye GameGo, koni ya kubahatisha ya michezo ya kubahatisha ya retro iliyoundwa na elimu ya TinkerGen. Michezo ambayo tulitengeneza ilikumbusha michezo ya zamani ya Nintendo. Katika nakala ya leo, tutachukua hatua nyuma, kwa umri wa dhahabu wa michezo ya uwanja. Tutaunda tena mchezo wa Wavamizi wa Nafasi katika Micropython kwenye Micro: microcontroller kidogo - na kama twist, tutatumia pia BitPlayer Micro: ugani kidogo, ambayo inatuwezesha kucheza mchezo kwa urahisi zaidi.

Kwa kuwa mafunzo haya ni juu ya kuweka alama kwenye mchezo katika Micropython, badala ya mlolongo wa jadi-kwa-hatua tuliyotumia hapo awali kwa mafunzo ya programu ya picha, tutapita kizuizi cha nambari kwa kuzuia - kupitia kazi muhimu, madarasa na kuu kitanzi. Unaweza kupakua nambari kamili kwenye hazina ya GitHub ya mradi huu. Buckle up na tuanze!

Vifaa

TinkerGen BitPlayer

BBC Micro: kidogo

Hatua ya 1: Kitanzi kuu

Fimbo ya furaha
Fimbo ya furaha

Katika mafunzo haya nitatumia neno "njia" mara nyingi. Njia katika chatu ni sawa na kazi, isipokuwa inahusishwa na kitu / darasa. Kwa hivyo, kwa kurahisisha, unaweza kuisoma kama "kazi ndani ya darasa". Unaweza kusoma zaidi juu ya njia hapa.

Tunaingia kitanzi kuu na

wakati sio mchezo_wa zaidi:

hali. Ndani tunapata idadi ya wavamizi, nafasi ya kuonekana kwao na idadi inahitajika kufikia kiwango kifuatacho kutoka kwa kamusi ya viwango. Ifuatayo tunaangalia harakati za kushoto-kulia na njia za mfano wa Listen_Dir za mfano wa darasa JoyStick. Ikiwa moja ya masharti yanatathmini kama ya Kweli, tunaongeza / kupungua x -thamani ya tabia yetu ya kucheza. Tunalazimisha kufikia [-2, 2] na hali mbili ikiwa. Kisha sisi kuanzisha mfano wa darasa DisplayBuffer na kuangalia kwa "ngao" au "moto risasi" vyombo vya habari. Tunatumia njia DisplayBuffer.set () kuweka vitu kwa utoaji wa baadaye. Kwa kutoa ngao tunatumia DisplayBuffer.set () moja kwa moja, lakini kwa risasi na wavamizi tunawaongeza kwenye orodha yao na kuiweka () moja kwa moja kwa kitanzi na nambari ifuatayo ya kutoa baadaye na DispBuffer.render ():

kwa b katika risasi: b.nder (dispBuf) kwa v katika vaders: v.render (dispBuf)

Wavamizi wote, risasi na ngao hutolewa kwenye onyesho mara moja kila kukicha kwa kitanzi kuu

utoajiBre.nder ()

Kabla ya mwisho wa kitanzi kuu tunaangalia ikiwa risasi yoyote ya wavamizi imefikia mwisho wa skrini, na ikiwa ni hivyo, tunaifuta kutoka kwenye orodha zao.

Hatua ya 2: Joystick

Fimbo ya furaha
Fimbo ya furaha

BitPlayer ni rahisi kushikilia na kutumia, na kijiti cha kushtukiza cha 2-axis kama watawala wa Gameboy au PSP, pia inajumuisha vifungo vingine 6 vinavyopangwa vilivyoitwa L, R, A, B, C na D. Kwa uzoefu wa kuzama na maingiliano, BitPlayer yenyewe ina buzzer, motor ya kutetemeka na bandari ya Grove I2C kuunganisha vifaa vya ziada kama onyesho la OLED.

Tunatumia tu mwamba wa kulia wa kulia wa fimbo ya mchezo huu, kwa mfano kamili juu ya matumizi ya vifungo vyote vya BitPlayer unaweza kuangalia joystick_example.py katika ghala la mradi wa GitHub. Wakati wa kuunda mfano wa darasa la JoyStick tunaangalia usomaji chaguomsingi wa X-axis na kuhifadhi hiyo thamani kwa ubinafsi. Halafu katika kazi Listen_Dir, tunaangalia ikiwa kupotoka kutoka kwa hiyo chaguo-msingi ni ya juu kuliko kutofautisha kwa unyeti (jaribu kujibadilisha mwenyewe, ikiwa unahisi kuwa JoyStick ni nyeti sana) na urudishe Ukweli wa Uongo kulingana na mwelekeo uliogunduliwa.

Wacha tuangalie mfano halisi wa jinsi hii inafanya kazi:

Wacha tuseme usomaji wetu wa msingi wa X-axis ni 0. Basi, ikiwa tutasogeza Joystick kulia:

New_X = JoyStick_X.read_analog () # Mpya_X = 200

Kulia = Mpya_X - mwenyewe. Soma_X #Kulia = 200 Kushoto = ubinafsi. Soma_X - Mpya_X #Kushoto = -200

Halafu tunapoangalia mwelekeo:

Precision = 150if Right> Precision: # 200> 150 True Get_Rocker = DIR ['R'] elif Left> Precision: # -200> 150 False Get_Rocker = DIR ['L'] mwingine: Get_Rocker = DIR ['NONE'] ikiwa Dir == Get_Rocker: rudi Kweli kingine: rudisha Uwongo

Hatua ya 3: Onyesha bafa

Onyesha bafa
Onyesha bafa

Darasa la DisplayBuf linawajibika kudhibiti skrini ya LED. Inafanywa kwa kutumia njia mbili, set () na render (). set () njia inabadilisha maadili yanayolingana na saizi za skrini za LED. Unaweza kukumbuka, saizi kwenye Micro: bit LED screen inaweza kuonyeshwa kama kamba au orodha - "00000: 00000: 00000: 00000: 00000" ni skrini tupu. "00000: 00000: 00000: 00000: 00100" ni skrini iliyo na pikseli iliyowaka hafifu katikati ya safu ya chini.

00000:

00000

:00000

:00000:

00100"

Ujumbe huu unaweza kuwa rahisi kusindika:)

Kwa hivyo, tunachofanya wakati wa kitanzi kuu ni njia ya kuweka simu () ya DisplayBuf kuweka vitu vyetu vyote vinavyohitaji kuonyeshwa kwenye skrini. Kisha tunatumia njia ya render () kuwaonyesha wote kwenye skrini wakati huo huo.

Hatua ya 4: Wavamizi, Risasi na Mchezaji

Wavamizi, Risasi na Mchezaji
Wavamizi, Risasi na Mchezaji

Risasi na Wavamizi ni wa darasa la Mover. Matukio ya mwendo wa darasa yana x, y maeneo na kasi, na pia mwangaza. Darasa la Mover lina njia mbili za mfano, set () na hoja (). set () njia inaita tu DisplayBuf set () njia na kuratibu zilizosasishwa ili kuokoa kwa utoaji wa baadaye kwenye tumbo la LED. hoja () njia za sasisho za mfano kuratibu kulingana na kasi ya mfano - ambayo inakuja muhimu baadaye, wakati tunahitaji kubadilisha kasi ya wavamizi kadri viwango vinavyoendelea.

Bullet ya Darasa na Wavamizi wa darasa ni darasa ndogo za darasa la Hoja. Hapa tunatumia kitu kinachoitwa urithi. Utendaji wa super () inaruhusu sisi kupiga njia za superclass katika subclass, bila hitaji la kurudia nambari.

Hatua ya 5: Ifanye yako mwenyewe

Ifanye yako mwenyewe
Ifanye yako mwenyewe

Hongera! Umeunda tena mchezo wa kawaida wa Wavamizi wa Nafasi kwenye Micro: kidogo na vifaa vya kupendeza vya uchezaji. Kwa kweli, unaweza kuboresha nambari ya mchezo kutoka hapa - kwa mfano, kwa sasa, mchezo una kiwango kimoja tu - unaweza kuongeza zile zenye changamoto zaidi. Pia, kama unavyoweza kukumbuka, mchezo wa asili una miamba inayoelea mbele ya mchezaji, ambayo unaweza kuongeza pia.

Ikiwa unafanya toleo bora la mchezo, shiriki kwenye maoni hapa chini! Kwa habari zaidi juu ya BitPlayer na vifaa vingine kwa watunga na waelimishaji wa STEM, tembelea wavuti yetu, https://tinkergen.com/ na ujiandikishe kwa jarida letu.

TinkerGen hivi karibuni imeunda kampeni ya Kickstarter ya MARK (Tengeneza Kitengo cha Roboti), kitanda cha roboti cha kufundisha usimbuaji, roboti, AI!

Nambari asili ya Micropython kutoka hexkcd / micro-vaders, ilibadilishwa kufanya kazi na TinkerGen BitPlayer.

Ilipendekeza: