Სარჩევი:

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

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

ვიდეო: Arduino Battleship თამაში: 3 ნაბიჯი
ვიდეო: 'მენეჯმენტის იდეოლოგია' მასტერკლასი # (22/30) - დავით კენჭაძე 2024, ნოემბერი
Anonim
არდუინოს საბრძოლო თამაში
არდუინოს საბრძოლო თამაში

მახსოვს ბავშვობაში საბრძოლო თამაშის ქაღალდისა და ფანქრის ვერსიას ვთამაშობდი. ფაქტობრივად, ეს იყო პირველი მსოფლიო ომის შემდეგ. მე ასევე მქონდა "ელექტრონული" ვარიანტი 1960 -იანი წლების დასაწყისში სახელწოდებით "Sonar Sub Hunt", რომელსაც ჰქონდა განათება და ხმები და ფარული ნაღმები. დღევანდელი ვიდეო თამაშის სტანდარტებით, Battleship საკმაოდ მოსაწყენია, მაგრამ ვიფიქრე, რომ მე მაინც გავაკეთებდი მხოლოდ იმის სანახავად, თუ რას ფიქრობდნენ შვილიშვილები ამაზე. ყოველივე ამის შემდეგ, ზოგჯერ რეტრო შეიძლება იყოს მაგარი.

ამ პროექტის ნაწილები არსებობს, რომლებიც სხვაგან გამოგადგებათ მაშინაც კი, თუ თქვენ არ ხართ დაინტერესებული Battleship თამაშის დამზადებით. მას აქვს მარტივი 4-ბიტიანი 1602 LCD ინტერფეისი, რომელიც მოიცავს რუტინას კონკრეტული პერსონაჟის ადგილმდებარეობის დასადგენად. ასევე არსებობს ინტერფეისი 4x4 გადართვის მატრიცის დეკოდირებისთვის. ეს ორი ინტერფეისი ხელმისაწვდომია როგორც ცალკეული ფაილები, ასე რომ ისინი ადვილად ტრანსპორტირებადია. თამაშს ასევე აქვს სხვადასხვა ხმის ეფექტების რუტინა და მარტივი ერთი ტრანზისტორი აუდიო გამაძლიერებლის წრე.

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

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

აქ წარმოდგენილი სქემა არის ერთი მოთამაშისთვის, ასე რომ ორი ერთეულის გაკეთებაა საჭირო. ერთეულები ურთიერთობენ 3 მავთულის ინტერფეისის გამოყენებით, რომელიც მოიცავს UART TX და RX ხაზებს და დამიწებულ მავთულს. მე ავირჩიე გამოვიყენო სტანდარტული 1/8 დიუმიანი სტერეო ყურსასმენის ჯეკი და სტანდარტული კაბელი მამაკაცის საცობებით ორივე ბოლოზე. RX ერთი ყუთიდან გადადის მეორე ყუთის TX და პირიქით. ამის გაკეთება შეგიძლიათ ყუთის შიგნით ყურსასმენის ჯეკზე შედუღებული მავთულის შეცვლით ან მისი შექმნისას მიკროსქემის დაფაზე გადაცვლით.

კლასიკური თამაში ასახული იყო როგორც მატრიცა, მაგრამ მე გადავწყვიტე მარტივი განხორციელება 1602 LCD ეკრანის გამოყენებით. პირველი ხაზი გვიჩვენებს მოთამაშის გემების ადგილმდებარეობას და მოწინააღმდეგის დარტყმებს. მეორე ხაზი გვიჩვენებს მოთამაშის დარტყმებს და ნებისმიერი დარტყმას მოწინააღმდეგის გემებზე. ეს უზრუნველყოფს გემების 16 შესაძლო ადგილს. გემების რაოდენობა მითითებულია პროგრამულ უზრუნველყოფაში და მე თვითნებურად ავირჩიე 5.

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

LCD ეკრანი ჩართულია 4 ბიტიანი ინტერფეისისთვის. მე ასევე დავამატე გარე LED პინზე D13, რათა მიეთითებინა რომელი მოთამაშე უნდა იღებდა დარტყმას. თავდაპირველად, მოთამაშეები წყვეტენ ვინ იღებს პირველ დარტყმას და შემდეგ პროგრამული უზრუნველყოფა ავტომატურად აკონტროლებს თამაშის წინ და უკან.

მინდოდა დავამატო მარტივი ხმოვანი ეფექტები გასროლისთვის, აფეთქებებისათვის, თამაში მზად იყო და გამარჯვებული/დამარცხებული. მე შევეცადე გამომეყენებინა მარტივი პიეზო ზარი, მაგრამ სამაგიეროდ პატარა დინამიკით დამთავრდა. დინამიკის მოთხოვნილი დენი აღემატება იმას, რისი გატარებაც შეუძლია არდუინოს, ასე რომ დაემატა მარტივი ტრანზისტორი გამაძლიერებელი. ხმა ჯერ კიდევ არ არის დიდი, მაგრამ უკეთესია ვიდრე ზუზუნთან. ჩემი დინამიკი არის 4 ohms, მაგრამ თუ თქვენ გაქვთ 8 ohm ერთი მაშინ შეცვალეთ რეზისტორი სქემაში 39 ohms– დან 33 ohms– მდე. თუ იყენებთ პიეზო ზუმერს თქვენ უნდა შეეძლოთ მისი მართვა არდუინოს პინიდან ზუზუნის მეორე მხარეს მიწასთან დაკავშირებული.

ასევე შედის გარე გადატვირთვის გადამრთველი და ის მავთულხლართულია პირდაპირ მიწასა და Arduino– ს „გადატვირთვის“პინს შორის. ეს უზრუნველყოფს თამაშის განახლების საშუალებას.

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

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

გასროლის ადგილი UART– ით გადაეცემა სხვა მოთამაშეს და შესაბამისი შედეგი დაუბრუნდება იმ მოთამაშეს, რომელმაც ესროლა. როგორც უკვე აღვნიშნეთ, პირველი კადრის გადაღების შემდეგ, პროგრამული უზრუნველყოფა აკონტროლებს ვინ გადაიღებს შემდეგ კადრს. კადრის გადაცემამდე, იგი შემოწმებულია წინა კადრების ადგილმდებარეობის მიხედვით. თუ ეს ადგილმდებარეობა უკვე გამოყენებულია, მაშინ კადრი არ გადაეცემა. "My_Shot" LED განსაზღვრავს ვისი ჯერია. ასევე არსებობს გასროლის ხმა, რომელიც წარმოიქმნება სწორი შერჩევისთვის და აფეთქების ხმა თუ გემი მოხვდა. ხმოვანი ეფექტები მომდინარეობს ინტერნეტში ნაპოვნი მაგალითებიდან, თამაშის შესაცვლელად.

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

ნაბიჯი 3: ეკრანის კადრები

ეკრანის კადრები
ეკრანის კადრები
ეკრანის კადრები
ეკრანის კადრები
ეკრანის კადრები
ეკრანის კადრები
ეკრანის კადრები
ეკრანის კადრები

აქ არის რამოდენიმე ეკრანის კადრი თამაშიდან. ეს არის ამ პოსტისთვის. შეამოწმეთ ჩემი სხვა ინსტრუქციები და ასევე ჩემი ვებ გვერდი: www.boomerrules.wordpress.com

გირჩევთ: