Სარჩევი:

Arduino Space Rocks თამაში: 3 ნაბიჯი
Arduino Space Rocks თამაში: 3 ნაბიჯი

ვიდეო: Arduino Space Rocks თამაში: 3 ნაბიჯი

ვიდეო: Arduino Space Rocks თამაში: 3 ნაბიჯი
ვიდეო: ძალიან საშიში კინო 4 2024, ივლისი
Anonim
Arduino Space Rocks თამაში
Arduino Space Rocks თამაში

თამაშობენ კომპიუტერზე, ტელეფონზე, სათამაშო კონსოლზე თუ დამოუკიდებელ ყუთზე, ბევრი ვიდეო თამაში შეიცავს დაბრკოლებების თავიდან აცილების ელემენტს. რა თქმა უნდა, შეიძლება გაიცეს ქულები ჟეტონების შეგროვებისთვის ან ლაბირინთში თქვენი გზის საპოვნელად, მაგრამ დარწმუნებული იყავით, რომ თამაშში არის ალბათ რაღაც, რომლის ერთადერთი მიზანია ხელი შეგიშალოთ ამის გაკეთებაში. პირველი ვიდეო თამაში იყო პონგი, მაგრამ ამის შემდეგ ყველაზე პოპულარული თამაშები იყო "ასტეროიდები" ან "Pac-Man". უახლესი ვარიაცია იქნება მარტივი, მაგრამ ნარკოტიკული თამაში "Flappy Birds".

ამას წინათ დავინახე, რომ ვიღაცამ გააკეთა "Flappy Bird"-ის მარტივი ორ დონის ვერსია, რომელიც ითამაშა საერთო 1602 LCD- ზე. ვფიქრობდი, რომ ეს იქნებოდა შვილიშვილებს, ასე რომ გადავწყვიტე საკუთარი ვარიაცია ნულიდან გამეკეთებინა. 1602 ვერსიას აქვს მხოლოდ ორი დონე, ამიტომ მე გადავწყვიტე გამოვიყენო 2004 წლის LCD (20x4) სამაგიეროდ, რომ ოდნავ გავზარდო თამაშის სირთულე. მე ასევე შევარჩიე, რომ ის უფრო მეტად დაემსგავსებინა "ასტეროიდებს", რადგან მოთამაშემ უნდა გაუძღვას "გემი" ლაბირინთში "კოსმოსური კლდეები". მაშინაც კი, თუ თქვენ არ ხართ დაინტერესებული თამაშის აგებით, შეიძლება არსებობდეს პროგრამული უზრუნველყოფის ზოგიერთი ელემენტი, რომელიც შეგიძლიათ გამოიყენოთ ერთ – ერთ თქვენს პროექტში.

ნაბიჯი 1: აპარატურა

ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა

აპარატურა შეიძლება დაფუძნდეს Arduino– ს თითქმის ნებისმიერ ვერსიაზე. მე გავაკეთე პროტოტიპი ნანოს გამოყენებით და შემდეგ კოდი დავწერე ATMega328 ჩიპში. ეს არის იგივე ჩიპი, რომელიც გამოიყენება ნანოში, მაგრამ მისი გამოყენება თავისთავად იძლევა უფრო კომპაქტურ აღნაგობას და ნაკლებ ენერგიის მოხმარებას. როგორც ხედავთ, მე შევქმენი წრე პატარა პურის დაფაზე, რომელიც გოჭდება LCD მოდულზე. სხვა ასპექტი, რომელიც განსხვავდება არის ის, რომ ნანო მუშაობს 16 MHz– ზე გარე ბროლის გამოყენებით, მაგრამ მე ავირჩიე ჩამონტაჟებული 8 MHz ოსცილატორის გამოყენება ATMega328 ჩიპისთვის. ეს ზოგავს ნაწილებს და ძალას.

2004 წლის LCD ინტერფეისი არდუინოსთან ისევე, როგორც 1602 LCD. საინტერესო განსხვავებაა ჩვენების ადგილების მისამართში. ცხადია, არის განსხვავება, რადგან ორი ხაზის ნაცვლად არის ოთხი ხაზი, მაგრამ 2004 წელს მესამე ხაზი არის პირველი ხაზის გაგრძელება და მეოთხე ხაზი მეორე ხაზის გაგრძელებაა. სხვა სიტყვებით რომ ვთქვათ, თუ გექნებოდათ საცდელი პროგრამა, რომელიც ახორციელებდა LCD– ზე სიმბოლოების სტრიქონს, 21 – ე სიმბოლო გამოჩნდება მესამე სტრიქონის დასაწყისში და 41 – ე პერსონაჟი იხვეწება პირველი სტრიქონის დასაწყისში. მე ვიყენებ ამ მახასიათებელს პროგრამულ უზრუნველყოფაში, რომ ეფექტურად გაორმაგდეს ლაბირინთის სიგრძე.

მე გადავწყვიტე, რომ ჩემი ვერსია ბატარეაზე მუშაობდეს, ასე რომ გამოვიყენე ჩვეულებრივი 18650 Li-ion, 3.6 ვოლტიანი ბატარეა. ამას მოვითხოვდი დავამატო პატარა დაფა USB- ის დატენვის მიზნით და კიდევ ერთი პატარა დაფა, რომ გაეზარდა ბატარეის ძაბვა 5 ვოლტამდე LCD და ATMega ჩიპებისთვის. სურათები აჩვენებს ჩემს მიერ გამოყენებულ მოდულებს, მაგრამ ასევე არის ყველა ერთში მოდულები, რომლებიც ასრულებენ ორივე ფუნქციას.

ნაბიჯი 2: პროგრამული უზრუნველყოფა

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

როგორც უკვე აღვნიშნეთ, სტრიქონები 1 და 3 ქმნიან წრიულ რიგს და მე -2 და მე –4 ხაზებიც ასევე. ეს ნიშნავს, რომ 20 ცვლის შემდეგ, 1 და 3 ხაზები იცვლება და ხაზები 2 და 4 იცვლება. 40 ცვლის შემდეგ ხაზები უბრუნდება თავდაპირველ პოზიციებს. ამ ქცევის გამო, ორიგინალური 20-პერსონაჟიანი ლაბირინთი ხდება სრულიად განსხვავებული, როდესაც ხაზები იცვლება. ამან ცხოვრება საინტერესო გახადა, როდესაც მე ვცადე ლაბირინთის ჩამოყალიბება. მე საბოლოოდ ახლახანს გავხსენი Excel ცხრილი, ასე რომ მე შემეძლო გზის დასახვა პროგრამული უზრუნველყოფის მუდმივად შეცვლის გარეშე. აქ მოწოდებულ პროგრამულ უზრუნველყოფას აქვს ლაბირინთის ორი ვერსია (ერთი გამოთქმულია), ასე რომ თქვენ შეგიძლიათ აირჩიოთ რომელი გსურთ ან შექმნათ თქვენი საკუთარი.

თავდაპირველად მინდოდა, რომ ეს იმდენად მარტივი ყოფილიყო, რომ ახალგაზრდა შვილიშვილებს შეეძლოთ მისი თამაში, მაგრამ მე ასევე მინდოდა, რომ მას ჰქონოდა რაიმე დამატებითი გამოწვევა, თუ ისინი (ან ვინმე სხვა) ამას ძალიან კარგად გაართმევდნენ თავს. თამაში იწყება ცვლის სიჩქარით 1 წამით. შიდა ტიკ სიჩქარეა 50 ms, რაც ნიშნავს რომ არის 20 ინტერვალი, რომლის დროსაც შესაძლებელია ზევით/ქვევით ღილაკების დაჭერა. ფაქტობრივად, დაჭერილი ღილაკი მოიხმარს 2 ტიკს, რადგან 50ms ინტერვალი გამოიყენება პრესის გამოსავლენად და კიდევ 50ms ინტერვალი გამოიყენება გამოშვების ლოდინისთვის. ნაგულისხმევი ლაბირინთით, მომდევნო ცვლის წინ საჭირო პრესის მაქსიმალური რაოდენობა არის სამი. თამაშის სირთულის გასაზრდელად მარტივი გზა არის დროის შემცირება მორიგეობებს შორის, ასე რომ, რამოდენიმე ხაზი კოდი ამას აკეთებს, როგორც კი ქულა იზრდება. ცვლის სიჩქარე განისაზღვრება 50 წამით ყოველ 20 ცვლაში, მინიმალური განაკვეთი შეზღუდულია 500 მმ -ით. ამ პარამეტრების შეცვლა ადვილია.

ცვლის სიჩქარის შეცვლის გარდა, პროგრამული უზრუნველყოფის ძირითადი ლოგიკაა "გემის" გადატანა და იმის დადგენა, შეეჯახა თუ არა "გემი" "კლდეს". ეს ფუნქციები უპირატესობას ანიჭებს განსაზღვრულ „როკ/სივრცის“მასივს და ასევე მასივს, რომელიც განსაზღვრავს მეხსიერების ადგილს ეკრანზე. ცვლის რაოდენობა შეესაბამება LCD ეკრანის სიგრძეს (0-19) და გამოიყენება როგორც ინდექსი ამ მასივებში. ლოგიკა გარკვეულწილად გართულებულია იმით, რომ ხაზები იცვლება ყოველ 20 ცვლაში. მსგავსი ლოგიკა გამოიყენება "გემის" პოზიციის დასადგენად, რომელიც შეიძლება იყოს ოთხ ხაზზე.

ანგარიში თითოეული სპექტაკლისთვის არის მხოლოდ იმ რაოდენობის ცვლა, რაც მოხდა და მაღალი ქულა ინახება მიკროკონტროლერის შიდა EEROM– ში. EEPROM ბიბლიოთეკა გამოიყენება ამ მეხსიერების წაკითხვისა და წერისთვის. ხელმისაწვდომი რუტინები იძლევა ერთ ბაიტს კითხულობს/წერს და კითხულობს/წერს მცურავი წერტილების მნიშვნელობებს. 0xA5 მნიშვნელობა ინახება EEROM– ის პირველ ადგილას, რომ მიუთითოს მაღალი ქულის შენახვა. თუ ეს მნიშვნელობა გააქტიურებულია, მაშინ მაღალი ქულის მცურავი წერტილის მნიშვნელობა იკითხება და გამოჩნდება. თუ 0xA5 მნიშვნელობა არ არის, მაშინ რუტინული ეწოდება მაღალი ქულის ინიციალიზაციას მნიშვნელობამდე 1. იგივე რუტინა ეწოდება, თუ სასურველია მაღალი ქულის გადატვირთვა. მაღალი ქულა დაუბრუნდება 1 -ის მნიშვნელობას ერთ -ერთი ზემოთ/ქვემოთ ღილაკის დაჭერით და მომენტალურად გადატვირთვის ღილაკზე დაჭერით.

ნაბიჯი 3: თამაში

თამაშობს თამაშს
თამაშობს თამაშს
თამაშობს თამაშს
თამაშობს თამაშს

როდესაც ძალა გამოიყენება, ამჟამინდელი მაღალი ქულა გამოჩნდება. მაღალი ქულის ჩვენების შემდეგ ნაჩვენებია "კლდეების" და "გემის" ლაბირინთი, შემდეგ თამაში იწყება რამდენიმე წამის შემდეგ. როდესაც "გემი" მოხვდება "კლდეზე", შეტყობინება "გაანადგურე და დაწვა" რამდენჯერმე ციმციმებს თამაშის ანგარიშის ჩვენებამდე. თუ ახალი მაღალი ქულა გაკეთდა, მაშინ ეს შეტყობინებაც გამოჩნდება. ახალი თამაში იწყება გადატვირთვის ღილაკზე დაჭერით.

გირჩევთ: