Բովանդակություն:

Տիեզերական զավթիչները Micropython- ում Micro- ում. Բիթ ՝ 5 քայլ
Տիեզերական զավթիչները Micropython- ում Micro- ում. Բիթ ՝ 5 քայլ

Video: Տիեզերական զավթիչները Micropython- ում Micro- ում. Բիթ ՝ 5 քայլ

Video: Տիեզերական զավթիչները Micropython- ում Micro- ում. Բիթ ՝ 5 քայլ
Video: 💬 NETFLIX-ի Ձեր սիրած սերիալը գրեք 🙃 2024, Նոյեմբեր
Anonim
Image
Image

Մեր նախորդ հոդվածներում մենք ուսումնասիրել ենք խաղերի ստեղծումը 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ուցադրել բուֆերը

Displayուցադրել բուֆերը
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: Ներխուժողները, փամփուշտները և խաղացողը

Invaders, Bullets and the Player
Invaders, Bullets and the Player

Փամփուշտներն ու զավթիչները պատկանում են 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- ի հետ աշխատելու համար:

Խորհուրդ ենք տալիս: