Სარჩევი:
- მარაგები
- ნაბიჯი 1: მთავარი მარყუჟი
- ნაბიჯი 2: ჯოისტიკი
- ნაბიჯი 3: ბუფერის ჩვენება
- ნაბიჯი 4: დამპყრობლები, ტყვიები და მოთამაშე
- ნაბიჯი 5: გახადეთ თქვენი საკუთარი
ვიდეო: კოსმოსური დამპყრობლები მიკროპითონში მიკროზე: ბიტი: 5 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:16
ჩვენს წინა სტატიებში ჩვენ შევისწავლეთ თამაშის დამზადება 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– თან სამუშაოდ.
გირჩევთ:
მიკროპროგრამირება: ბიტი რობოტი და ჯოისტიკი: ბიტი კონტროლერი მიკროპითონით: 11 ნაბიჯი
მიკროპროგრამირება: Bit Robot & Joystick: Bit Controller With MicroPython: Robocamp 2019-ისთვის, ჩვენი საზაფხულო რობოტიკის ბანაკი, 10-13 წლის ახალგაზრდები ახვევენ, აპროგრამებენ და აშენებენ BBC მიკრო: ბიტებზე დაფუძნებულ „ანტობატურ რობოტს“, ასევე პროგრამირებას მიკრო: ცოტა დისტანციური მართვისთვის. თუ ამჟამად იმყოფებით რობოკამპში, თხილამურებით
განაახლეთ თქვენი კოსმოსური გაშვება კერბალის კოსმოსური პროგრამის ფიზიკური დადგმის ღილაკით: 6 ნაბიჯი
განაახლეთ თქვენი კოსმოსური გაშვება კერბალის კოსმოსური პროგრამის ფიზიკური დადგმის ღილაკით: მე ახლახანს ავიღე კერბალის კოსმოსური პროგრამის დემო ვერსია. Kerbal Space Program არის სიმულატორის თამაში, რომელიც საშუალებას გაძლევთ შეიმუშაოთ და გაუშვათ რაკეტები და ნავიგაცია მოახდინოთ მათ შორეულ მთვარეებსა და პლანეტებზე. მე ჯერ კიდევ ვცდილობ წარმატებით ჩავიდე მთვარეზე (ო
როგორ შევიკრიბოთ შთამბეჭდავი ხის რობოტი (ნაწილი 2: რობოტი დაბრკოლების თავიდან ასაცილებლად) - დაფუძნებულია მიკროზე: ბიტი: 3 ნაბიჯი
როგორ შევიკრიბოთ შთამბეჭდავი ხის რობოტის იარაღი (ნაწილი 2: რობოტი დაბრკოლების თავიდან აცილების მიზნით)-დაფუძნებულია მიკროზე: ბიტი: ადრე ჩვენ შემოვიღეთ Armbit ხაზის მიკვლევის რეჟიმში. შემდეგი, ჩვენ წარმოგიდგენთ თუ როგორ უნდა დააყენოთ Armbit დაბრკოლების რეჟიმის თავიდან ასაცილებლად
როგორ შევიკრიბოთ მარტივი და მძლავრი სახელურის კონტროლერი- მიკროზე დაყრდნობით: ბიტი: 10 ნაბიჯი (სურათებით)
როგორ შევიკრიბოთ მარტივი და მძლავრი სახელურის კონტროლერი- მიკრო: ბიტიდან გამომდინარე: სახელურის სახელური არის Handlebit. ფორმა არის სახელური და ძალიან მაგრად გამოიყურება! ახლა ჩვენ შეგვიძლია შესავალი გავაკეთოთ Handlebit– ის შესახებ, მოდით გადავიდეთ მასზე
სინათლისა და ფერის გაზომვები Pimoroni Enviro– სთან ერთად: ბიტი მიკროსთვის: ბიტი: 5 ნაბიჯი
სინათლის და ფერის გაზომვები Pimoroni Enviro– სთან ერთად: ბიტ მიკრო: ცოტა: მე ვმუშაობდი ზოგიერთ მოწყობილობაზე, რომელიც ადრე იძლევა სინათლისა და ფერის გაზომვას და თქვენ შეიძლება ბევრი რამ იპოვოთ ამ გაზომვების მიღმა თეორიის შესახებ აქ და აქ. ცოტა ხნის წინ გამოვიდა Enviro: bit, add-on for m