Სარჩევი:

კოსმოსური დამპყრობლები მიკროპითონში მიკროზე: ბიტი: 5 ნაბიჯი
კოსმოსური დამპყრობლები მიკროპითონში მიკროზე: ბიტი: 5 ნაბიჯი

ვიდეო: კოსმოსური დამპყრობლები მიკროპითონში მიკროზე: ბიტი: 5 ნაბიჯი

ვიდეო: კოსმოსური დამპყრობლები მიკროპითონში მიკროზე: ბიტი: 5 ნაბიჯი
ვიდეო: Buck Rogers Pilot Reaction: Funny & Inappropriate Sci Fi #buckrogers 2024, ივლისი
Anonim
Image
Image

ჩვენს წინა სტატიებში ჩვენ შევისწავლეთ თამაშის დამზადება GameGo– ზე, პორტატული რეტრო სათამაშო კონსოლი, რომელიც შემუშავებულია TinkerGen განათლების მიერ. თამაშები, რომლებიც ჩვენ გავაკეთეთ, ახსენებდა ძველ Nintendo თამაშებს. დღევანდელ სტატიაში ჩვენ ვაპირებთ უკან გადადგას, არკადული თამაშების ოქროს ხანაში. ჩვენ ხელახლა შევქმნით Space Invaders თამაშს Micropython– ში Micro: bit microcontroller - და როგორც ირონია, ჩვენ ასევე გამოვიყენებთ BitPlayer Micro: bit გაფართოებას, რაც საშუალებას გვაძლევს უფრო მოსახერხებლად ვითამაშოთ თამაში.

ვინაიდან ეს სამეურვეო არის თამაშის კოდირება მიკროპითონში, ნაცვლად ტრადიციული ეტაპობრივი თანმიმდევრობისა, რომელიც ადრე გამოვიყენეთ გრაფიკული პროგრამირების გაკვეთილებისთვის, ჩვენ ვაპირებთ კოდის ბლოკს ბლოკ-ბლოკზე გადასვლას-მნიშვნელოვან ფუნქციებს, კლასებს და ძირითადს მარყუჟი თქვენ შეგიძლიათ ჩამოტვირთოთ სრული კოდი ამ პროექტის GitHub საცავში. დაიჭირე თავი და დავიწყოთ!

მარაგები

TinkerGen BitPlayer

BBC მიკრო: ცოტა

ნაბიჯი 1: მთავარი მარყუჟი

ჯოისტიკი
ჯოისტიკი

ამ გაკვეთილში მე ხშირად ვიყენებ სიტყვას "მეთოდი". პითონში მეთოდი გარკვეულწილად მსგავსია ფუნქციისა, გარდა იმისა, რომ იგი ასოცირდება ობიექტთან/კლასებთან. ასე რომ, გამარტივების მიზნით, შეგიძლიათ წაიკითხოთ როგორც "ფუნქცია კლასში". მეთოდების შესახებ მეტი შეგიძლიათ წაიკითხოთ აქ.

ჩვენ შევდივართ მთავარ მარყუჟში

თამაშის გარეშე:

მდგომარეობა. შიგნით ჩვენ ვიღებთ დამპყრობლების რაოდენობას, მათი გამოჩენის შანსს და რაოდენობას, რომელიც საჭიროა დონის ლექსიკონის შემდეგ საფეხურზე გადასასვლელად. შემდეგ ჩვენ ვამოწმებთ მარცხენა-მარჯვენა მოძრაობას კლასის მაგალითის JoyStick- ის Listen_Dir მაგალითის მეთოდებით. თუ ერთ-ერთი პირობა შეაფასებს როგორც True, ჩვენ ვიმატებთ/ვამცირებთ ჩვენი დაკვრადი პერსონაჟის x- მნიშვნელობას. ჩვენ ვზღუდავთ მას [-2, 2] ორი პირობით. შემდეგ ჩვენ ვიწყებთ DisplayBuffer კლასის მაგალითს და ვამოწმებთ ღილაკზე "ფარი" ან "ცეცხლის ტყვია". ჩვენ ვიყენებთ მეთოდს DisplayBuffer.set (), რათა დავაყენოთ ობიექტები მოგვიანებით რენდერაციისთვის. ფარის გასაკეთებლად ჩვენ ვიყენებთ პირდაპირ DisplayBuffer.set () - ს, მაგრამ ტყვიებისა და დამპყრობლებისათვის ჩვენ ვამატებთ მათ შესაბამის სიას და ვაყენებთ () მათ სათითაოდ მარყუჟში შემდეგი კოდით შემდგომში DispBuffer.render () - ით გადასატანად:

b– სთვის ტყვიებში: b.rnder (dispBuf) v vaders- ში: v.render (dispBuf)

ყველა დამპყრობელი, ტყვია და ფარი ნაჩვენებია ჩვენებაზე ერთხელ, ყოველი ძირითადი მარყუჟის გამეორებით

dispBuf.render ()

ძირითადი მარყუჟის დამთავრებამდე ჩვენ ვამოწმებთ მიაღწია თუ არა დამპყრობლების რომელიმე ტყვიამ ეკრანის ბოლოს და თუ არის, ჩვენ ვშლით მათ შესაბამისი სიებიდან.

ნაბიჯი 2: ჯოისტიკი

ჯოისტიკი
ჯოისტიკი

BitPlayer არის მარტივი დასაჭერი და გამოსაყენებელი, 2 ღერძიანი ჯოისტიკით, როგორიცაა Gameboy ან PSP კონტროლერები, იგი ასევე შეიცავს კიდევ 6 პროგრამირებად ღილაკს, რომელსაც ეტიკეტი აქვს როგორც L, R, A, B, C და D. იმპრესიული და ინტერაქტიული გამოცდილებისათვის, BitPlayer თავად აღჭურვილია ზუზერის, ვიბრაციის ძრავით და Grove I2C პორტით, OLED ეკრანის მსგავსად დამატებითი პერიფერიული მოწყობილობების დასაკავშირებლად.

ჩვენ ვიყენებთ მხოლოდ ჯოისტიკის მარცხენა-მარჯვენა როკერს ამ თამაშისთვის, სრული მაგალითისთვის BitPlayer- ის ყველა ღილაკის გამოყენებისას შეგიძლიათ ნახოთ joystick_example.py ამ პროექტის GitHub საცავში. JoyStick კლასის მაგალითის შექმნისას ჩვენ ვამოწმებთ X- ღერძის ნაგულისხმევ კითხვას და ვინახავთ ამ მნიშვნელობას საკუთარ თავში. Read_X. შემდეგ ფუნქცია Listen_Dir, ჩვენ ვამოწმებთ, რომ გადახრა ამ ნაგულისხმევი მნიშვნელობიდან უფრო მაღალია, ვიდრე მგრძნობელობის ცვლადი (სცადეთ თავად შეცვალოთ, თუ ფიქრობთ, რომ JoyStick ძალიან მგრძნობიარეა) და დააბრუნეთ True of False გამოვლენილი მიმართულებით.

მოდით შევხედოთ კონკრეტულ მაგალითს, თუ როგორ მუშაობს ეს:

ვთქვათ, რომ ჩვენი ნაგულისხმევი X ღერძის კითხვა არის 0. მაშინ, თუ ჯოისტიკს მარჯვნივ გადავიტანთ:

New_X = JoyStick_X.read_analog () #New_X = 200

მარჯვენა = ახალი_X - საკუთარი. წაკითხული_X #მარჯვენა = 200 მარცხენა = საკუთარი თავი. წაკითხვის_ X - ახალი_X #მარცხენა = -200

შემდეგ, როდესაც ჩვენ ვამოწმებთ მიმართულებას:

Precision = 150if მარჯვნივ> სიზუსტე: #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 other: დაბრუნება False

ნაბიჯი 3: ბუფერის ჩვენება

ბუფერის ჩვენება
ბუფერის ჩვენება

DisplayBuf კლასი პასუხისმგებელია LED ეკრანის კონტროლზე. ეს კეთდება ორი მეთოდის გამოყენებით: set () და render (). set () მეთოდი ცვლის LED ეკრანის პიქსელების შესაბამის მნიშვნელობებს. ალბათ გახსოვთ, რომ მიკრო: ბიტიანი LED ეკრანის პიქსელები შეიძლება გამოისახოს სტრიქონით ან სიით - "00000: 00000: 00000: 00000: 00000" არის ცარიელი ეკრანი. "00000: 00000: 00000: 00000: 00100" არის ეკრანი სუსტად განათებული პიქსელით ქვედა რიგის ცენტრში.

00000:

00000

:00000

:00000:

00100"

ამ აღნიშვნის დამუშავება უფრო ადვილი იქნება:)

ასე რომ, რასაც ჩვენ ვაკეთებთ ძირითადი მარყუჟის დროს არის DisplayBuf– ის call set () მეთოდი, რათა დავაყენოთ ყველა ჩვენი ობიექტი, რომელიც უნდა გამოჩნდეს ეკრანზე. შემდეგ ჩვენ ვიყენებთ render () მეთოდს, რომ რეალურად ვაჩვენოთ ისინი ყველა ერთდროულად ეკრანზე.

ნაბიჯი 4: დამპყრობლები, ტყვიები და მოთამაშე

დამპყრობლები, ტყვიები და მოთამაშე
დამპყრობლები, ტყვიები და მოთამაშე

ტყვიები და დამპყრობლები მიეკუთვნებიან Mover კლასს. Mover კლასის შემთხვევებს აქვთ მათი x, y მდებარეობა და სიჩქარე, ასევე სიკაშკაშე. Mover კლასს აქვს ორი ინსტანციის მეთოდი, set () და move (). set () მეთოდი უბრალოდ იძახებს DisplayBuf set () მეთოდს განახლებული კოორდინატებით, რათა შეინახოთ მოგვიანებით რენტგენზე LED მატრიცაზე. გადაადგილება () მეთოდის განახლება ინსტანციის კოორდინატი მაგალითის სიჩქარის მიხედვით - ეს გამოდგება მოგვიანებით, როდესაც ჩვენ გვჭირდება შეცვალოთ დამპყრობლების სიჩქარე დონის პროგრესირებასთან ერთად.

Class Bullet და class Invader არიან Mover კლასის ქვეკლასები. აქ ჩვენ ვიყენებთ რაღაცას, რასაც მემკვიდრეობა ჰქვია. სუპერ () ფუნქციონირება გვაძლევს საშუალებას გამოვიძახოთ სუპერკლასის მეთოდები ქვეკლასში, კოდის გამეორების გარეშე.

ნაბიჯი 5: გახადეთ თქვენი საკუთარი

გახადე შენი საკუთარი
გახადე შენი საკუთარი

გილოცავთ! თქვენ ახლახან შექმენით კლასიკური Space Invaders თამაში Micro– ზე: ცოტათი მაგარი სათამაშო ტექნიკით. რა თქმა უნდა, თქვენ შეგიძლიათ გააუმჯობესოთ თამაშის კოდი აქედან - მაგალითად, ჯერჯერობით, თამაშს აქვს მხოლოდ ერთი დონე - შეგიძლიათ დაამატოთ უფრო რთული. ასევე, როგორც გახსოვთ, ორიგინალურ თამაშს აქვს კლდეები, რომლებიც მოთამაშის წინ მიცურავენ, რომელთა დამატებაც შეგიძლიათ.

თუ თქვენ შექმნით თამაშის გაუმჯობესებულ ვერსიას, გაუზიარეთ იგი ქვემოთ მოცემულ კომენტარებში! დამატებითი ინფორმაციისთვის BitPlayer– ისა და სხვა ტექნიკის შესახებ შემქმნელებისთვის და STEM პედაგოგებისთვის, ეწვიეთ ჩვენს ვებ გვერდს, https://tinkergen.com/ და გამოიწერეთ ჩვენი ბიულეტენი.

TinkerGen– მა ახლახანს შექმნა Kickstarter კამპანია MARK– ისთვის (Make A Robot Kit), რობოტის ნაკრები კოდირების, რობოტიკის, AI სწავლებისთვის!

ორიგინალური მიკროპითონის კოდი hexkcd/micro-vaders– დან, შეიცვალა TinkerGen BitPlayer– თან სამუშაოდ.

გირჩევთ: