Zu lernen, wie man Code schreibt, kann eine lange Reise sein. Sie müssen nicht nur Ressourcen finden, die Ihnen beim Lernen helfen, sondern Sie müssen auch spannende Projektideen finden, die Ihre Ausbildung auf Kurs halten.
Videospiele bieten eine großartige Gelegenheit, etwas zu programmieren, das Ihnen Spaß macht. Und sie können Ihnen auch die Grundlagen beibringen, die Sie brauchen, um ein guter Programmierer zu sein. Dieser Artikel untersucht ein DIY-Handheld-Arduino-Videospielprojekt, um Ihnen den Einstieg zu erleichtern.
Was machen wir und warum?
Bevor Sie in den Leitfadenteil dieses Artikels eintauchen, ist es sinnvoll zu erkunden, was wir machen und warum wir es für dieses Projekt ausgewählt haben. Bei der Entwicklung von Spielen für Geräte wie Arduinos gibt es mehrere Herausforderungen.
- Speicherplatz: Die meisten Arduino-Boards kommen mit sehr wenig RAM oder Flash-Speicher. Dies begrenzt nicht nur die Menge an Code, die sie ausführen können, sondern stellt auch Herausforderungen dar, wenn es um die Arbeit mit Variablen geht.
- Verarbeitungsleistung: Der von uns verwendete Arduino hat eine CPU mit geringem Stromverbrauch, sodass es unmöglich ist, ressourcenhungrige Anwendungen dafür zu erstellen.
- Begrenzte Komponenten: Arduinos haben viele Pins zur Verfügung, aber viele Komponenten benötigen mehr als einen. Dies schränkt uns ein, wenn es um Bedienelemente und Anzeigeausgänge geht.
Angesichts dieser Herausforderungen haben wir uns entschieden, ein Handheld-Gerät zu entwickeln, das ein sehr einfaches, reaktionsbasiertes Spiel ausführt. Sie könnten leicht andere Spiele für die Hardware entwickeln, mit der wir arbeiten, und wir ermutigen Sie, kreativ zu sein.
Das Spiel selbst ist sehr einfach. Auf dem Bildschirm erscheinen drei Blöcke, zwei umrandet und einer gefüllt, jeweils mit einer entsprechenden physischen Schaltfläche darunter. Der Spieler muss in jeder Runde den richtigen Knopf drücken, um weiterzuspielen, und wenn er den falschen Knopf drückt oder die Zeit abgelaufen ist, ist das Spiel vorbei. Jeder erfolgreiche Tastendruck bringt Punkte. Das Spiel erhöht langsam seine Schwierigkeit, indem es die verfügbare Reaktionszeit verringert.
Verdrahtung des OLED-Displays, des Arduino und der Tasten
Die Verkabelung Ihres Handheld-Spiels ist der erste Schritt in diesem Prozess. Wie Sie im Schaltplan oben sehen können, müssen Sie nicht viele Verbindungen herstellen, um loszulegen, und Sie können sogar ein Steckbrett für dieses Projekt verwenden.
Wir haben bereits einen Leitfaden veröffentlicht, der Ihnen dabei helfen soll Drahtdruckknöpfe zu einem Arduino. Unser Arduino Aquarium Monitor-Projekt zeigt Ihnen, wie Sie ein OLED-Display mit einem solchen Mikrocontroller verwenden. Daher konzentrieren wir uns für den Rest dieses Artikels auf den Code für dieses Projekt.
Arduino Handheld-Spielcode
Die richtige Formatierung und ordentliche Dateistrukturen sind sowohl für Anfänger als auch für erfahrene Programmierer sehr wichtig. Sie werden es sich selbst danken, dass Sie sich die Zeit genommen haben, Ihren Code ordentlich zu organisieren, wenn Sie ihn jemals wieder durchgehen müssen.
Der Code verwendet eine Haupt-INO-Datei, um die Grundlage unseres Projekts zu bilden. Es gibt auch eine C++-Datei, um unser Display zu steuern, eine C++-Datei, um den Hauptspielcode auszuführen, und eine Arduino-Bibliotheksdatei, um alles miteinander zu verbinden.
Wir werden weiter unten tiefer in diesen Code eintauchen, aber wir empfehlen Ihnen, einen Blick auf den kommentierten Code in unserem zu werfen Arduino Handheld Game-Projekt auf GitHub. Es wird Ihnen helfen, sich neben diesem Artikel darauf zu beziehen.
Die Bibliotheksdatei (library.h)
Unsere Bibliotheksdatei spielt eine entscheidende Rolle, indem sie unsere anderen Projektdateien miteinander verbindet, sodass sie als eine einzige Anwendung funktionieren können. Diese Datei enthält Deklarationen, um die Arduino.h-Bibliothek und alle Funktionen in unserem Spielcode einzuschließen, die zwischen unseren Dateien funktionieren müssen. Ohne dies würde unser Code einfach nicht funktionieren.
Die Haupt-INO-Datei (main.ino)
Wie viele Arduino-Projekte begann auch dieses mit der Standardvorlage, die von der Arduino IDE bereitgestellt wurde. Diese Vorlage gibt es aufstellen und Schleife Funktionen, die wir verwenden, um Funktionen in unseren anderen Dateien aufzurufen. Diese Datei hat auch eine Deklaration, um die Datei „library.h“ einzuschließen.
Die Setup-Funktion ist ideal zum Initialisieren unseres Displays und unserer Tasten, da sie nur einmal ausgeführt wird, wenn der Arduino zurückgesetzt oder eingeschaltet wird. Dazu rufen wir in unserer Anzeigedatei die Funktion disSetup() und in unserer Spieldatei die Funktion butSetup() auf.
Unsere loop()-Funktion ist sogar noch einfacher als die setup()-Funktion, mit nur einem einzigen Aufruf der gameState()-Funktion, die sich in unserer Spieldatei befindet. Wir werden dies später in diesem Artikel genauer untersuchen.
Die Anzeigecodedatei (display.cpp)
Wir verwenden für dieses Projekt ein SSD1306-OLED-Display, obwohl Sie eine andere Art von Display verwenden können, wenn Sie den Code entsprechend bearbeiten. Diese Datei beginnt mit der Einbindung der Bibliotheksdatei, Bibliothek.h. Es enthält dann Deklarationen für die Bibliotheken SPI, Wire, Adafruit_GX und Adafruit_SSD1306. Anschließend definiert es einige Konstanten, um Einstellungen für die Anzeige bereitzustellen.
Die erste Funktion, disSetup, initialisiert die Anzeige und zeigt einen Logo-Begrüßungsbildschirm. Es löscht dann die Anzeige, nachdem es etwa 2 Sekunden gewartet hat. Unsere Hauptdatei, main.ino, ruft in ihrer Datei disSetup auf aufstellen Funktion.
Die restlichen Funktionen in dieser Datei, mit Ausnahme von timerBar(), bilden die verschiedenen Bildschirme, die während des Spiels zu sehen sind. Die Spieldatei, game.cpp, ruft jede dieser Funktionen auf.
- startGame(): Diese Funktion steuert den ersten Bildschirm, den der Spieler sieht. Es fragt einfach, ob sie bereit sind, während sie anrufen switchInstance Funktion in der Spieldatei gefunden.
- StartingGame(): Sobald der Spieler das Spiel startet, zeigt dieser Bildschirm einen kurzen Countdown. Es ändert dann den Status des Spiels entsprechend.
- inGame(): Dies ist die komplexeste unserer Anzeigefunktionen, die drei Variablen verwendet, um jede Runde des Spiels zu laden. Es beginnt mit einer if-Anweisung, die bestimmt, welche der drei Kacheln gefüllt werden sollen, gefolgt von der Anzeige der Kacheln und des Levels und der Punktzahl des Spielers.
- timerBar(): Diese Funktion verwendet eine Variable, um eine Zeitleiste am unteren Rand des Bildschirms anzuzeigen. Es zeigt dem Spieler, wie viel Zeit er für jede Runde hat.
- successScreen(): Dies ist eine einfache Funktion, die jedes Mal eine Nachricht anzeigt, wenn der Spieler eine Runde erfolgreich beendet.
- endGame(): Diese letzte Funktion zeigt einen Game-Over-Bildschirm mit der Punktzahl des Spielers und der Option, das Spiel erneut zu starten.
Die Spielcodedatei (game.cpp)
Als letzte zu untersuchende Datei ist es schließlich an der Zeit, sich den Spielcode anzusehen. Diese Datei beginnt wie die anderen mit der Aufnahme der Datei library.h. Es enthält auch eine lange Liste verschiedener Integer-Variablen, die wir während des Spiels verwenden.
Sie finden die Funktion butSetup() vor allem anderen. Die Funktion setup() in unserer Hauptdatei ruft butSetup auf. Diese Funktion verwendet Variablen, um unsere Schaltflächen als Eingaben einzurichten, die wir später lesen können.
- switchInstance(): Diese Funktion schaltet zwischen Instanzen des Spiels um, vom Startbildschirm zum Spiel- und Game-Over-Bildschirm. Es erhält eine Variable, die ihm mitteilt, in welchen Spielstatus es wechseln soll. Eine if-Anweisung wartet auf einen Tastendruck, um das Spiel aus dem Zustand startGame() zu starten. Eine weitere if-Anweisung startet das Spiel erneut aus dem Zustand endGame().
- gameState(): Diese Funktion legt die Spielschwierigkeit basierend auf der Punktzahl des Spielers fest und ruft je nach Spielstand die richtige Funktion auf. Es beginnt mit einer Reihe von if-Anweisungen, die Variablen basierend auf der Punktzahl des Spielers festlegen, gefolgt von weiteren if-Anweisungen, um die aktuelle Instanz zu überprüfen.
- tileSelector(): Diese Funktion generiert eine Zufallszahl zwischen 0 und 2, die dem Spiel mitteilt, welche der drei Kacheln zu einem bestimmten Zeitpunkt gefüllt werden sollen.
- theGame(): Diese Funktion ist wohl die wichtigste von allen. Es ruft die tileSelector und im Spiel Funktionen, Auswählen einer neuen Kachel und Anzeigen auf dem Bildschirm. Danach finden Sie eine for-Schleife, die als Timer für jede Runde fungiert. Es enthält eine Reihe von if-Anweisungen, die Tastendrücke erfassen und feststellen, ob sie korrekt sind.
Erstellen Sie Ihr eigenes Handheld-Arduino-Spiel
Dieser Artikel ist eine Ergänzung zum Projektcode auf GitHub. Weitere Informationen zu den spezifischen Codezeilen, die wir verwendet haben, finden Sie in den Kommentaren in diesen Dateien. Du kannst es aber auch einfach auf deinen Arduino laden und den Spaß genießen.
Kreativität ist der Schlüssel in der Welt der Spieleentwicklung, und wir ermutigen Sie, neben dieser an Ihren eigenen Spielideen zu arbeiten.
Die 10 besten Arduino-Radio-Projekte
Lesen Sie weiter
Verwandte Themen
- Programmierung
- DIY
- DIY-Projektideen
- DIY-Projekt-Tutorials
- Arduino
- Programmierung
Über den Autor

Samuel ist ein in Großbritannien ansässiger Technologieautor mit einer Leidenschaft für alles, was mit Heimwerken zu tun hat. Nachdem er Unternehmen in den Bereichen Webentwicklung und 3D-Druck gegründet und viele Jahre als Autor gearbeitet hat, bietet Samuel einen einzigartigen Einblick in die Welt der Technologie. Er konzentriert sich hauptsächlich auf DIY-Tech-Projekte und liebt nichts mehr, als lustige und aufregende Ideen zu teilen, die Sie zu Hause ausprobieren können. Außerhalb der Arbeit trifft man Samuel normalerweise beim Radfahren, beim Spielen von PC-Videospielen oder beim verzweifelten Versuch, mit seiner Haustierkrabbe zu kommunizieren.
Abonnieren Sie unseren Newsletter
Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!
Klicken Sie hier, um sich anzumelden