Cuprins:

Joc de cuirasat Arduino: 3 pași
Joc de cuirasat Arduino: 3 pași

Video: Joc de cuirasat Arduino: 3 pași

Video: Joc de cuirasat Arduino: 3 pași
Video: F-35 Fighter Jets VS Russian Battleships - Military Simulation Arma 3 2024, Iulie
Anonim
Arduino Battleship Game
Arduino Battleship Game

Îmi amintesc că am jucat în copilărie o versiune de hârtie și creion a Jocului de cuir. De fapt, a existat încă de la primul război mondial. Am avut și o variantă „electronică” la începutul anilor 1960 numită „Sonar Sub Hunt” care avea lumini și sunete și mine ascunse. Conform standardelor de jocuri video de astăzi, Battleship este destul de plictisitor, dar m-am gândit că aș face unul oricum doar pentru a vedea ce au gândit nepoții despre asta. La urma urmei, uneori retro poate fi cool.

Există fragmente din acest proiect care ar fi utile în altă parte, chiar dacă nu sunteți interesat să creați jocul Battleship. Are o interfață simplă 1602 LCD pe 4 biți, care include o rutină pentru setarea unei anumite locații de caractere. Există, de asemenea, o interfață pentru decodarea unei matrice de comutare 4x4. Aceste două interfețe sunt disponibile ca fișiere separate, astfel încât acestea să poată fi transportate cu ușurință. Jocul are, de asemenea, diverse rutine de efecte sonore și un circuit amplificator audio cu un singur tranzistor.

Pasul 1: Hardware

Hardware
Hardware
Hardware
Hardware

Schema prezentată aici este pentru un singur jucător, deci ar trebui făcute două unități. Unitățile comunică utilizând o interfață cu 3 fire care include liniile UART TX și RX și un fir de împământare. Am ales să folosesc o mufă de căști stereo standard de 1/8 inch și un cablu standard cu prize de sex masculin la ambele capete. RX-ul dintr-o cutie merge la TX-ul celeilalte cutii și viceversa. Puteți face acest lucru schimbând firele lipite la mufa pentru căști din interiorul cutiei sau schimbându-le pe placa de circuit atunci când o construiți.

Jocul clasic a fost prezentat ca o matrice, dar am decis să fac o implementare simplă folosind un ecran 1602 LCD pentru afișaj. Prima linie arată locațiile navei jucătorului și loviturile adversarului. A doua linie arată șuturile jucătorului și orice lovituri pe navele adversarului. Aceasta oferă 16 locații posibile pentru nave. Numărul de nave este setat în software și am ales în mod arbitrar 5.

Cele 16 locații ale navei se potrivesc perfect cerințelor de comutare, deoarece permite o matrice 4x4. Există plăcuțe de comutare cu matrice 4x4 disponibile, dar am ales să folosesc comutatoare individuale într-o singură linie pentru a se potrivi cu afișajul liniar. Cu toate acestea, am conectat comutatoarele ca o matrice 4x4, astfel încât sunt necesare doar opt pini Arduino. Consultați schema de conectare a comutatorului și schema pentru conexiunile adecvate.

Afișajul LCD este cablat pentru o interfață de 4 biți. Am adăugat și un LED extern pe pinul D13 pentru a indica care jucător ar trebui să facă o lovitură. Inițial, jucătorii decid cine face prima lovitură și apoi software-ul controlează automat înainte și înapoi jocul.

Am vrut să adaug efecte sonore simple pentru fotografiere, explozii, jocul pregătit și câștigător / învins. Am încercat să folosesc un senzor piezo buzzer simplu, dar am ajuns cu un difuzor mic. Curentul cerut de difuzor depășește ceea ce poate gestiona Arduino, astfel încât a fost adăugat un amplificator de tranzistor simplu. Sunetul încă nu este grozav, dar este mai bun decât cu buzzer-ul. Difuzorul meu este de 4 ohmi, dar dacă aveți unul de 8 ohmi, schimbați rezistorul din schemă de la 39 ohmi la 33 ohmi. Dacă utilizați un buzzer piezo, ar trebui să îl puteți conduce direct de la pinul Arduino cu cealaltă parte a buzzerului conectată la masă.

Un comutator de resetare extern este, de asemenea, inclus și este conectat direct între masă și pinul de „resetare” de pe Arduino. Aceasta oferă mijloacele pentru repornirea jocului.

Pasul 2: Software

Software-ul are fișierul include pentru interfața LCD și am creat, de asemenea, un fișier include pentru scanarea matricei comutatorului 4x4. Inițializarea îi solicită jucătorului să selecteze locațiile pentru navele sale și apoi trece la starea „Gata”. Când ambii jucători sunt gata, unul dintre ei începe jocul apăsând un buton.

Locația împușcatului este transmisă prin UART către celălalt jucător, iar rezultatul corespunzător este transmis înapoi către jucătorul care a tras. După cum sa menționat mai devreme, odată ce prima fotografie a fost făcută, software-ul controlează cine face următoarea fotografie. Înainte de transmiterea unei fotografii, aceasta este verificată în funcție de locațiile fotografiilor anterioare. Dacă acea locație a fost deja utilizată, atunci fotografierea nu va fi transmisă. LED-ul „My_Shot” determină a cui este rândul. Există, de asemenea, un sunet împușcat generat pentru o selecție validă și un sunet de explozie dacă o navă este lovită. Efectele sonore sunt derivate din exemple găsite online cu modificări pentru a se potrivi jocului.

Odată ce toate navele unui adversar au fost lovite, un mesaj este afișat pe fiecare LCD - unul ca învingător și unul ca învins. Mesajul specifică, de asemenea, că jocul poate fi repornit apăsând butonul de resetare. Există, de asemenea, efecte sonore separate pentru câștigător și învins.

Pasul 3: Capturi de ecran

Capturi de ecran
Capturi de ecran
Capturi de ecran
Capturi de ecran
Capturi de ecran
Capturi de ecran
Capturi de ecran
Capturi de ecran

Iată câteva capturi de ecran din joc. Gata pentru această postare. Consultați celelalte instructabile ale mele și, de asemenea, site-ul meu web la: www.boomerrules.wordpress.com

Recomandat: