Բովանդակություն:
- Պարագաներ
- Քայլ 1: Հիմնական հանգույց
- Քայլ 2: oyոյստիկ
- Քայլ 3: Displayուցադրել բուֆերը
- Քայլ 4: Ներխուժողները, փամփուշտները և խաղացողը
- Քայլ 5: Դարձրեք այն ձեր սեփականը
Video: Տիեզերական զավթիչները Micropython- ում Micro- ում. Բիթ ՝ 5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Մեր նախորդ հոդվածներում մենք ուսումնասիրել ենք խաղերի ստեղծումը GameGo- ի վրա, դյուրակիր ռետրո խաղային կոնսոլից, որը մշակվել է TinkerGen կրթության կողմից: Մեր պատրաստած խաղերը հիշեցնում էին հին Nintendo խաղերը: Այսօրվա հոդվածում մենք պատրաստվում ենք մեկ քայլ հետ գնալ ՝ դեպի արկադային խաղերի ոսկե դարաշրջան: Մենք նորից կստեղծենք Space Invaders խաղը Micropython- ում Micro: bit microcontroller - և որպես շրջադարձ, մենք կօգտագործենք նաև BitPlayer Micro: bit ընդլայնում, ինչը թույլ է տալիս մեզ ավելի հարմար խաղ խաղալ:
Քանի որ այս ձեռնարկը վերաբերում է Micropython- ում խաղի կոդավորմանը, ավանդական փուլային հաջորդականության փոխարեն, որը մենք նախկինում օգտագործում էինք գրաֆիկական ծրագրավորման ձեռնարկների համար, մենք բլոկ առ բլոկ անցնում ենք կոդով ՝ անցնելով կարևոր գործառույթներ, դասեր և հիմնական հանգույց Դուք կարող եք ներբեռնել ամբողջական կոդը այս նախագծի GitHub շտեմարանում: Կապվեք և սկսենք:
Պարագաներ
TinkerGen BitPlayer
BBC Micro: քիչ
Քայլ 1: Հիմնական հանգույց
Այս ձեռնարկում ես բավականին հաճախ կօգտագործեմ «մեթոդ» բառը: Պիթոնում մեթոդը որոշ չափով նման է գործառույթին, բացառությամբ, որ այն կապված է օբյեկտի/դասերի հետ: Այսպիսով, պարզեցման համար կարող եք կարդալ այն որպես «գործառույթ դասարանում»: Մեթոդների մասին ավելին կարող եք կարդալ այստեղ:
Մենք մտնում ենք հիմնական հանգույցի հետ
մինչդեռ ոչ game_over:
վիճակը: Ներսում մենք ստանում ենք զավթիչների թիվը, նրանց հայտնվելու հավանականությունը և մակարդակը, որը անհրաժեշտ է մակարդակների բառարանից հաջորդ մակարդակին հասնելու համար: Հաջորդը մենք ստուգում ենք ձախ-աջ շարժումը `լսողական օրինակ JoyStick- ի օրինակելի մեթոդներով: Եթե պայմաններից մեկը գնահատվում է որպես True, մենք ավելացնում/նվազեցնում ենք մեր խաղարկվող կերպարի x- արժեքը: Մենք սահմանափակում ենք այն [-2, 2] երկու, եթե երկու պայմաններով: Այնուհետև մենք նախաստորագրում ենք DisplayBuffer դասի օրինակ և ստուգում ենք «վահան» կամ «կրակող փամփուշտ» կոճակների սեղմումները: Մենք օգտագործում ենք DisplayBuffer.set () մեթոդը `հետագայում մատուցման օբյեկտներ սահմանելու համար: Վահանը մատուցելու համար մենք ուղղակիորեն օգտագործում ենք DisplayBuffer.set () - ը, բայց փամփուշտների և զավթիչների համար մենք դրանք ավելացնում ենք իրենց համապատասխան ցուցակին և () դրանք մեկ առ մեկ տեղադրում ենք օղակի հաջորդ կոդով ՝ հետագայում DispBuffer.render () - ով մատուցման համար:
b- ի համար `փամփուշտներով.
Բոլոր զավթիչները, փամփուշտները և վահանը ցուցադրվում են յուրաքանչյուր հիմնական օղակի կրկնությունից մեկ անգամ
dispBuf.render ()
Հիմնական հանգույցի ավարտից առաջ մենք ստուգում ենք, թե արդյոք զավթիչներից որևէ մեկը հասել է էկրանի ծայրին, և եթե դրանք կան, դրանք ջնջում ենք իրենց համապատասխան ցուցակներից:
Քայլ 2: oyոյստիկ
BitPlayer- ը հեշտ է պահել և օգտագործել, ինչպես նաև Gameboy- ի կամ PSP կարգավորիչների նման 2 առանցքային ջոյսթիքով, այն ներառում է ևս 6 ծրագրավորվող կոճակներ, որոնք պիտակավորված են որպես L, R, A, B, C և D. Հիասքանչ և ինտերակտիվ փորձի համար ` ինքնին ունի ազդանշան, թրթռման շարժիչ և Grove I2C նավահանգիստ ՝ OLED էկրանին նման լրացուցիչ սարքեր միացնելու համար:
Այս խաղի համար մենք օգտագործում ենք միայն ջոյսթիկի ձախ-աջ թրթռոցը, օրինակ ՝ BitPlayer- ի բոլոր կոճակների օգտագործման դեպքում կարող եք դիտել joystick_example.py այս նախագծի GitHub պահոցում: JoyStick դասի օրինակը ստեղծելիս մենք ստուգում ենք X առանցքի կանխադրված ընթերցումը և այդ արժեքը պահում ենք ինքնուրույն: Read_X: Այնուհետև Listen_Dir գործառույթում մենք ստուգում ենք, արդյոք այդ կանխադրված արժեքից շեղումը զգայունության փոփոխականից բարձր է (փորձեք ինքներդ այն շտկել, եթե կարծում եք, որ JoyStick- ը չափազանց զգայուն է) և վերադարձնել True of False ըստ հայտնաբերված ուղղության:
Եկեք նայենք կոնկրետ օրինակին, թե ինչպես է դա աշխատում.
Եկեք ասենք, որ մեր լռելյայն X առանցքի ընթերցումը 0 է: Հետո, եթե Joystick- ը տեղափոխենք աջ.
New_X = JoyStick_X.read_analog () #New_X = 200
Աջ = Նոր_X - ինքն. Կարդալ_X #Աջ = 200 Ձախ = ինքն. Կարդալ_X - Նոր_X #Ձախ = -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: Displayուցադրել բուֆերը
DisplayBuf դասը պատասխանատու է LED էկրանը վերահսկելու համար: Դա արվում է երկու եղանակով ՝ set () և render (): set () մեթոդը փոխում է LED էկրանի պիքսելներին համապատասխանող արժեքները: Գուցե հիշում եք, որ Micro: bit LED էկրանին պիքսելները կարող են արտահայտվել որպես տող կամ ցուցակ. «00000: 00000: 00000: 00000: 00000» -ը դատարկ էկրան է: «00000: 00000: 00000: 00000: 00100» -ը ստորին շարքի կենտրոնում թույլ լուսավորված պիքսելներով էկրան է:
00000:
00000
:00000
:00000:
00100"
Այս նշումը կարող է ավելի հեշտ մշակվել:)
Այսպիսով, այն, ինչ մենք անում ենք հիմնական հանգույցի ընթացքում, DisplayBuf- ի զանգի set () եղանակն է `մեր բոլոր օբյեկտները կարգավորելու համար, որոնք պետք է ցուցադրվեն էկրանին: Այնուհետև մենք օգտագործում ենք render () մեթոդը ՝ դրանք բոլորը միաժամանակ էկրանին ցուցադրելու համար:
Քայլ 4: Ներխուժողները, փամփուշտները և խաղացողը
Փամփուշտներն ու զավթիչները պատկանում են Mover դասին: Mover դասի օրինակներն ունեն իրենց x, y տեղերը և արագությունը, ինչպես նաև պայծառությունը: Mover դասը ունի երկու օրինակ մեթոդ ՝ set () և move (): set () մեթոդը պարզապես կանչում է DisplayBuf set () մեթոդը `թարմացված կոորդինատներով` LED մատրիցով հետագայում մատուցելու համար պահելու համար: move () մեթոդը թարմացնում է օրինակների կոորդինատը ըստ ատյանի արագության. դա օգտակար է դառնում ավելի ուշ, երբ մենք պետք է փոխենք զավթիչների արագությունը մակարդակների առաջընթացին զուգընթաց:
Class Bullet- ը և class Invader- ը Mover դասի ենթադասեր են: Այստեղ մենք օգտագործում ենք ժառանգություն կոչվող մի բան: Super () ֆունկցիոնալությունը թույլ է տալիս մեզ ենթադասում անվանել գերդասի մեթոդներ ՝ առանց ծածկագիրը կրկնելու անհրաժեշտության:
Քայլ 5: Դարձրեք այն ձեր սեփականը
Շնորհավորում եմ: Դուք հենց նոր ստեղծեցիք Space Invaders դասական խաղը Micro- ում. Իհարկե, այստեղից կարող եք բարելավել խաղի ծածկագիրը, օրինակ ՝ այս պահի դրությամբ խաղն ունի միայն մեկ մակարդակ, կարող եք ավելացնել ավելի դժվարին: Բացի այդ, ինչպես կարող եք հիշել, օրիգինալ խաղն ունի ժայռեր, որոնք լողում են խաղացողի առջև, որոնք կարող եք նաև ավելացնել:
Եթե դուք իսկապես կատարելագործում եք խաղի տարբերակը, կիսվեք այն ստորև բերված մեկնաբանություններում: BitPlayer- ի և արտադրողների և STEM մանկավարժների համար BitPlayer- ի և այլ սարքավորումների մասին լրացուցիչ տեղեկությունների համար այցելեք մեր կայքը ՝ https://tinkergen.com/ և բաժանորդագրվեք մեր տեղեկագրին:
TinkerGen- ը վերջերս ստեղծել է Kickstarter արշավ MARK- ի համար (Make A Robot Kit), կոդավորման, ռոբոտաշինության, AI դասավանդման ռոբոտների հավաքածու:
Սկզբնական Micropython ծածկագիրը hexkcd/micro-vaders- ից փոխվել է TinkerGen BitPlayer- ի հետ աշխատելու համար:
Խորհուրդ ենք տալիս:
LEGO WALL-E Micro- ով ՝ բիթ ՝ 8 քայլ (նկարներով)
LEGO WALL-E Micro: bit: Մենք միկրո: bit- ի և LEGO- ի համար հարմար Bit Board- ի հետ միասին վերահսկում ենք երկու servo շարժիչները, որոնք թույլ կտան WALL-E- ին կարողանալ հատել ձեր հյուրասենյակի հատակի վտանգավոր տեղանքը: .Կոդի համար մենք կօգտագործենք Microsoft MakeCode- ը, որը ծաղկում է
Միացված ծաղկաման Micro- ի համար. Բիթ ՝ 4 քայլ
Միացված մի ծաղկաման Micro: bit- ի համար Սա տեղեկատվություն է ստանում հողի խոնավության տվիչից (հաղորդունակություն): Հողի խոնավության վա տառադարձում
Networkանցային մրցակցություն. Ցածր ուշացման խաղ BBC Micro- ի համար. Բիթ ՝ 10 քայլ (նկարներով)
Rանցային մրցակցություն. Ցածր ուշացման խաղ BBC Micro- ի համար. էկրանի թարմացումներ flexibleկուն թվով մասնակիցներ Easy co
Թարմացրեք ձեր տիեզերական արձակումը Kerbal տիեզերական ծրագրի ֆիզիկական բեմադրման կոճակով `6 քայլ
Թարմացրեք ձեր տիեզերական արձակումը Kerbal տիեզերական ծրագրի ֆիզիկական բեմադրման կոճակով. Վերջերս ես վերցրեցի Kerbal Space ծրագրի դեմո տարբերակը: Kerbal Space Program- ը սիմուլյատոր խաղ է, որը թույլ է տալիս նախագծել և արձակել հրթիռներ և նավարկել դրանք դեպի հեռավոր արբանյակներ և մոլորակներ: Ես դեռ փորձում եմ հաջողությամբ վայրէջք կատարել Լուսնի վրա (o
DIY MusiLED, Երաժշտության համաժամեցված լուսադիոդներ մեկ կտտոցով Windows և Linux հավելվածով (32 բիթ և 64 բիթ): Հեշտ է վերստեղծել, Հեշտ օգտագործել, Հեշտ տեղափոխել ՝ 3 քայլ
DIY MusiLED, Երաժշտության համաժամեցված լուսադիոդներ ՝ մեկ կտտոցով Windows և Linux հավելվածով (32-բիթ և 64-բիթ): Հեշտ է վերստեղծել, դյուրին օգտագործել, հեշտ է տեղափոխել. LED- ները դրանք լուսավորելու են ըստ հարվածի էֆեկտների (Snare, High Hat, Kick)