Sommario:

Arduino Battleship Game: 3 passaggi
Arduino Battleship Game: 3 passaggi

Video: Arduino Battleship Game: 3 passaggi

Video: Arduino Battleship Game: 3 passaggi
Video: We built an LED battleship game box in a week 2024, Luglio
Anonim
Arduino Battleship Game
Arduino Battleship Game

Ricordo di aver giocato a una versione cartacea e matita del gioco Battleship da bambino. In effetti, esiste dalla prima guerra mondiale. All'inizio degli anni '60 avevo anche una variante "elettronica" chiamata "Sonar Sub Hunt" che aveva luci e suoni e mine nascoste. Per gli standard dei videogiochi di oggi, Battleship è piuttosto noioso, ma ho pensato di farne uno comunque solo per vedere cosa ne pensavano i nipotini. Dopotutto, a volte il retrò può essere cool.

Ci sono frammenti di questo progetto che sarebbero utili altrove anche se non sei interessato a realizzare il gioco Battleship. Ha una semplice interfaccia LCD 1602 a 4 bit che include una routine per l'impostazione di una posizione di carattere specifica. C'è anche un'interfaccia per la decodifica di una matrice di commutazione 4x4. Queste due interfacce sono disponibili come file di inclusione separati, quindi sono facilmente trasportabili. Il gioco ha anche varie routine di effetti sonori e un semplice circuito di amplificazione audio a un transistor.

Passaggio 1: hardware

Hardware
Hardware
Hardware
Hardware

Lo schema presentato qui è per un singolo giocatore, quindi sarebbe necessario creare due unità. Le unità comunicano utilizzando un'interfaccia a 3 fili che include le linee UART TX e RX e un filo di terra. Ho scelto di utilizzare un jack per cuffie stereo standard da 1/8 di pollice e un cavo standard con spine maschio su entrambe le estremità. L'RX di una casella va al TX dell'altra casella e viceversa. Puoi farlo scambiando i fili saldati al jack delle cuffie all'interno della scatola o scambiandoli sul circuito quando lo costruisci.

Il gioco classico era strutturato come una matrice ma ho deciso di fare una semplice implementazione utilizzando un LCD 1602 per il display. La prima riga mostra le posizioni della nave del giocatore e i colpi dell'avversario. La seconda riga mostra i colpi del giocatore e gli eventuali colpi sulle navi dell'avversario. Ciò fornisce 16 possibili posizioni per le navi. Il numero di navi è impostato nel software e ho scelto arbitrariamente 5.

Le 16 posizioni della nave si adattano perfettamente ai requisiti dello switch perché consente una matrice 4x4. Sono disponibili pad per interruttori a matrice 4x4, ma ho scelto di utilizzare singoli interruttori in una singola riga per abbinare il display lineare. Tuttavia, ho cablato gli interruttori come una matrice 4x4 in modo che siano necessari solo otto pin Arduino. Fare riferimento allo schema di cablaggio dell'interruttore e allo schema per i collegamenti corretti.

Il display LCD è cablato per un'interfaccia a 4 bit. Ho anche aggiunto un LED esterno sul pin D13 per indicare quale giocatore dovrebbe scattare. Inizialmente, i giocatori decidono chi fa il primo colpo e poi il software controlla automaticamente l'avanti e indietro del gioco.

Volevo aggiungere semplici effetti sonori per lo sparo, le esplosioni, il gioco pronto e il vincitore/perdente. Ho provato a usare un semplice cicalino piezoelettrico, ma ho finito con un piccolo altoparlante. La corrente richiesta dall'altoparlante supera quella che Arduino può gestire, quindi è stato aggiunto un semplice amplificatore a transistor. Il suono non è ancora eccezionale, ma è meglio che con il cicalino. Il mio altoparlante è da 4 ohm, ma se ne hai uno da 8 ohm, cambia la resistenza nello schema da 39 ohm a 33 ohm. Se usi un cicalino piezo dovresti essere in grado di pilotarlo direttamente dal pin Arduino con l'altro lato del cicalino collegato a terra.

È incluso anche un interruttore di reset esterno ed è collegato direttamente tra la massa e il pin di "reset" sull'Arduino. Ciò fornisce i mezzi per riavviare il gioco.

Passaggio 2: software

Il software ha il file di inclusione per la mia interfaccia LCD e ho anche creato un file di inclusione per la scansione della matrice di switch 4x4. L'inizializzazione richiede al giocatore di selezionare le posizioni per le sue navi e quindi passa allo stato "Pronto". Quando entrambi i giocatori sono pronti, uno di loro inizia il gioco premendo un interruttore.

La posizione del tiro viene trasmessa tramite l'UART all'altro giocatore e il risultato appropriato viene ritrasmesso al giocatore che ha sparato il colpo. Come accennato in precedenza, una volta effettuato il primo scatto, il software controlla chi esegue lo scatto successivo. Prima che uno scatto venga trasmesso, viene confrontato con le posizioni degli scatti precedenti. Se quella posizione è già stata utilizzata, lo scatto non verrà trasmesso. Il LED “My_Shot” determina di chi è il turno. C'è anche un suono di sparo generato per una selezione valida e un suono di esplosione se una nave viene colpita. Gli effetti sonori sono derivati da esempi trovati online con modifiche per adattarsi al gioco.

Una volta che le navi di un avversario sono state tutte colpite, viene visualizzato un messaggio su ciascun display LCD: uno come vincitore e uno come perdente. Il messaggio specifica inoltre che il gioco può essere riavviato premendo il pulsante di ripristino. Ci sono anche effetti sonori separati per il vincitore e il perdente.

Passaggio 3: schermate

Schermate
Schermate
Schermate
Schermate
Schermate
Schermate
Schermate
Schermate

Ecco alcune schermate del gioco. Questo è tutto per questo post. Dai un'occhiata ai miei altri Instructables e anche al mio sito Web all'indirizzo: www.boomerrules.wordpress.com

Consigliato: