Inhaltsverzeichnis:

Arduino Battleship-Spiel - Gunook
Arduino Battleship-Spiel - Gunook

Video: Arduino Battleship-Spiel - Gunook

Video: Arduino Battleship-Spiel - Gunook
Video: We built an LED battleship game box in a week 2024, November
Anonim
Arduino-Schlachtschiff-Spiel
Arduino-Schlachtschiff-Spiel

Ich erinnere mich, dass ich als Kind eine Papier- und Bleistiftversion des Battleship-Spiels gespielt habe. Tatsächlich gibt es es seit dem 1. Weltkrieg. Ich hatte auch eine "elektronische" Variante in den frühen 1960er Jahren namens "Sonar Sub Hunt", die Lichter und Geräusche und versteckte Minen hatte. Nach heutigen Videospielstandards ist Battleship ziemlich langweilig, aber ich dachte, ich würde trotzdem eins machen, nur um zu sehen, was die Enkel darüber dachten. Retro kann doch manchmal cool sein.

Es gibt Teile dieses Projekts, die an anderer Stelle nützlich wären, auch wenn Sie nicht daran interessiert sind, das Battleship-Spiel zu entwickeln. Es verfügt über eine einfache 4-Bit-1602-LCD-Schnittstelle, die eine Routine zum Einstellen einer bestimmten Zeichenposition enthält. Außerdem gibt es eine Schnittstelle zur Dekodierung einer 4x4-Switch-Matrix. Diese beiden Schnittstellen stehen als separate Include-Dateien zur Verfügung, sodass sie leicht transportiert werden können. Das Spiel verfügt auch über verschiedene Soundeffekt-Routinen und eine einfache Ein-Transistor-Audioverstärkerschaltung.

Schritt 1: Hardware

Hardware
Hardware
Hardware
Hardware

Der hier gezeigte Schaltplan ist für einen einzelnen Spieler, daher müssten zwei Einheiten hergestellt werden. Die Einheiten kommunizieren über eine 3-Draht-Schnittstelle, die die UART TX- und RX-Leitungen und ein Erdungskabel umfasst. Ich entschied mich für eine standardmäßige 1/8-Zoll-Stereo-Kopfhörerbuchse und ein Standardkabel mit männlichen Steckern an beiden Enden. Der RX von einer Box geht an den TX der anderen Box und umgekehrt. Sie können dies tun, indem Sie die an die Kopfhörerbuchse in der Box gelöteten Drähte oder beim Bauen auf der Platine austauschen.

Das klassische Spiel war als Matrix angelegt, aber ich entschied mich für eine einfache Implementierung mit einem 1602-LCD für die Anzeige. Die erste Zeile zeigt die Schiffspositionen des Spielers und die Schüsse des Gegners. Die zweite Zeile zeigt die Schüsse des Spielers und alle Treffer auf den gegnerischen Schiffen. Das bietet 16 mögliche Standorte für Schiffe. Die Anzahl der Schiffe wird in der Software eingestellt und ich habe willkürlich 5 gewählt.

Die 16 Schiffsstandorte passen gut zu den Switch-Anforderungen, da sie eine 4x4-Matrix ermöglichen. Es sind 4x4-Matrix-Switch-Pads verfügbar, aber ich habe mich dafür entschieden, einzelne Schalter in einer einzigen Zeile zu verwenden, um der linearen Anzeige zu entsprechen. Ich habe die Schalter jedoch als 4x4-Matrix verdrahtet, so dass nur acht Arduino-Pins benötigt werden. Die richtigen Anschlüsse sind dem Schaltplan und dem Schaltplan zu entnehmen.

Das LCD-Display ist für eine 4-Bit-Schnittstelle verdrahtet. Ich habe auch eine externe LED an Pin D13 hinzugefügt, um anzuzeigen, welcher Spieler schießen soll. Zunächst entscheiden die Spieler, wer den ersten Schuss macht und dann steuert die Software automatisch das Hin und Her des Spiels.

Ich wollte einfache Soundeffekte für den Schuss, die Explosionen, das Spiel bereit und den Gewinner/Verlierer hinzufügen. Ich habe es mit einem einfachen Piezo-Summer versucht, bin aber stattdessen mit einem kleinen Lautsprecher gelandet. Der vom Lautsprecher benötigte Strom übersteigt das, was der Arduino verarbeiten kann, daher wurde ein einfacher Transistorverstärker hinzugefügt. Der Klang ist immer noch nicht so toll, aber besser als mit dem Summer. Mein Lautsprecher hat 4 Ohm, aber wenn Sie einen 8-Ohm-Lautsprecher haben, ändern Sie den Widerstand im Schaltplan von 39 Ohm auf 33 Ohm. Wenn Sie einen Piezo-Summer verwenden, sollten Sie ihn direkt vom Arduino-Pin ansteuern können, wobei die andere Seite des Summers mit Masse verbunden ist.

Ein externer Reset-Schalter ist ebenfalls enthalten und wird direkt zwischen Masse und dem "Reset" -Pin des Arduino verdrahtet. Dies bietet die Möglichkeit, das Spiel neu zu starten.

Schritt 2: Software

Die Software hat die Include-Datei für mein LCD-Interface und ich habe auch eine Include-Datei für das 4x4-Switch-Matrix-Scannen erstellt. Die Initialisierung fordert den Spieler auf, die Standorte für seine Schiffe auszuwählen und geht dann in den Zustand „Bereit“. Wenn beide Spieler bereit sind, startet einer von ihnen das Spiel durch Drücken eines Schalters.

Die Schussposition wird über den UART an den anderen Spieler übertragen und das entsprechende Ergebnis wird an den Spieler zurückgesendet, der den Schuss abgefeuert hat. Wie bereits erwähnt, steuert die Software nach der ersten Aufnahme, wer die nächste Aufnahme macht. Bevor eine Aufnahme übertragen wird, wird sie mit den Orten der vorherigen Aufnahmen verglichen. Wenn dieser Ort bereits verwendet wurde, wird die Aufnahme nicht übertragen. Die LED „My_Shot“bestimmt, wer an der Reihe ist. Es wird auch ein Schussgeräusch für eine gültige Auswahl erzeugt und ein Explosionsgeräusch, wenn ein Schiff getroffen wird. Die Soundeffekte sind von Beispielen abgeleitet, die online gefunden wurden, mit Modifikationen, die dem Spiel entsprechen.

Sobald alle Schiffe eines Gegners getroffen wurden, wird auf jedem LCD eine Meldung angezeigt – eines als Gewinner und eines als Verlierer. Die Meldung gibt auch an, dass das Spiel durch Drücken der Reset-Taste neu gestartet werden kann. Es gibt auch separate Soundeffekte für Gewinner und Verlierer.

Schritt 3: Screenshots

Screenshots
Screenshots
Screenshots
Screenshots
Screenshots
Screenshots
Screenshots
Screenshots

Hier sind einige Screenshots aus dem Spiel. Das war's für diesen Beitrag. Schauen Sie sich meine anderen Instructables und auch meine Website an: www.boomerrules.wordpress.com

Empfohlen: