Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Zusammenbau des TFT-LCD
- Schritt 2: Programmieren des TFT-LCD
- Schritt 3: Fertig
Video: Floppy Bird - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
Heute werden wir ein Spiel mit einem TFT-LCD machen. Dies würde nach einem sehr beliebten Spiel aussehen und viele Leute spielen dieses Spiel immer noch. Das Spiel heißt Flappy Bird, aber dieses Spiel ist ein bisschen anders, weil die Benutzeroberfläche und die Funktionsweise des Spiels anders sind. Ich habe dieses Spiel Floppy Bird genannt, da dies zu Urheberrechtsproblemen führen könnte. Trotzdem ist es ein wirklich lustiges Spiel und es ist einfach zu machen. Ich habe dieses anweisbare gemacht, das es Ihnen ermöglicht, das Spiel vollständig zu machen und es so zu machen, wie ich es getan habe. Wenn Sie Fragen haben, kommentieren Sie bitte unten und ich werde versuchen, diese Fragen so schnell wie möglich zu beantworten.
Lieferungen
- Arduino Mega 2560 und Kabel
- Arduino Mega-Schild
- Arduino TFT LCD kompatibel mit dem Arduino Mega 2560
- SD-Karte
Schritt 1: Zusammenbau des TFT-LCD
Jetzt können wir mit dem Zusammenbau des TFT-LCDs beginnen. Wir werden das TFT-LCD mit dem Schild verbinden, also zuerst das TFT-LCD nehmen und es grundsätzlich mit den Pins auf dem Schild ausrichten. Nachdem Sie die Stifte ausgerichtet haben, drücken Sie das TFT-LCD nach unten, damit es einrastet. Wenn sich alle Stiftköpfe in der Abschirmung befinden und Sie die Stiftköpfe nicht sehen können, wissen Sie, dass das TFT-LCD richtig angeschlossen ist. Als nächstes können wir das Schild an den Arduino Mega 2560 anschließen. Richten Sie die Stifte des Schildes am Arduino Mega aus und stecken Sie es ein. Wenn sich alle Stiftköpfe im Arduino Mega befinden und Sie die Stiftköpfe nicht sehen können, ist das wenn Sie wissen, dass das TFT-LCD richtig angeschlossen und bereit zum Einschalten ist. Stecken Sie das Arduino ein, um zu sehen, ob Sie das LCD richtig angeschlossen haben. Wenn das LCD einschaltet und der Bildschirm weiß ist, dann herzlichen Glückwunsch, Sie haben das TFT-LCD erfolgreich angeschlossen und können jetzt programmiert werden. Als letztes müssen wir noch eine Sache tun, nämlich die SD-Karte im LCD anzuschließen. Auf der Rückseite des TFT-LCDs befindet sich ein SD-Kartenslot, in den Sie die SD-Karte einfach einstecken können. Also einfach einstecken und fertig.
Schritt 2: Programmieren des TFT-LCD
Jetzt werden wir das LCD so programmieren, dass es das Spiel ausführt und wir es spielen können. Unten ist der Code, den Sie mit der Arduino IDE kompilieren und hochladen müssen.
Probleme, die Sie möglicherweise haben:
Ändern Sie die Parameter des TFT-LCDs entsprechend Ihrem Modell.
KOMPLETTER CODE:
#einschließen #einschließen #einschließen
//==== Objekte erstellen
UTFT myGLCD(ILI9341_16, 38, 39, 40, 41); // Parameter sollten an Ihr Display/Shield-Modell angepasst werden URTouch myTouch (6, 5, 4, 3, 2);
//==== Schriftarten definieren
extern uint8_t SmallFont; extern uint8_t BigFont; extern uint8_t SevenSegNumFont;
extern unsigned int bird01[0x41A]; // Vogel-Bitmap
intx, y; // Variablen für die Koordinaten wo das Display gedrückt wurde
// Floppy Bird
int xP = 319; int yP = 100; int yB = 50; int MovingRate = 3; int fallRateInt = 0; Float-FallRate = 0; int-Punktzahl = 0; int lastSpeedUpScore = 0; int höchste Punktzahl; boolescher screenPressed = false; boolean gameStarted = false;
Leere Einrichtung () {
// Anzeige einleiten myGLCD. InitLCD(); myGLCD.clrScr(); myTouch. InitTouch(); myTouch.setPrecision(PREC_MEDIUM); höchstes Ergebnis = EEPROM.read(0); // Lesen Sie die höchste Punktzahl aus dem EEPROM initieGame(); // Initiiere das Spiel }
Leere Schleife () {
xP=xP-Bewegungsrate; // xP - x-Koordinate der Säulen; Bereich: 319 - (-51) drawPilars(xP, yP); // Zeichnet die Säulen // yB - y-Koordinate des Vogels, die vom Wert der fallendenRate-Variablen abhängt yB+=fallRateInt; FallRate=FallRate+0,4; // Mit jeder Inetration erhöht sich die Fallrate, damit wir die Wirkung der Beschleunigung/Schwerkraft ausüben können fallRateInt= int(fallRate); // Prüft auf Kollision if(yB>=180 || yB<=0){ // top und bottom gameOver(); } if((xP=5) && (yB<=yP-2)){// obere Säule gameOver(); } if((xP=5) && (yB>=yP+60)){// untere Säule gameOver(); } // Zeichnet den Vogel drawBird(yB);
// Nachdem die Säule den Bildschirm passiert hat
wenn (xPRESET=250) && (x=0) && (y=0) && (x=30) && (y=270){ myGLCD.setColor (0, 200, 20); myGLCD.fillRect(318, 0, x, y-1); myGLCD.setColor(0, 0, 0); myGLCD.drawRect(319, 0, x-1, y);
myGLCD.setColor(0, 200, 20);
myGLCD.fillRect(318, y+81, x, 203); myGLCD.setColor(0, 0, 0); myGLCD.drawRect(319, y+80, x-1, 204); } else if(x<=268) {// Zeichnet ein blaues Rechteck rechts von der Säule myGLCD.setColor(114, 198, 206); myGLCD.fillRect(x+51, 0, x+60, y); // Zeichnet die Säule myGLCD.setColor(0, 200, 20); myGLCD.fillRect(x+49, 1, x+1, y-1); // Zeichnet den schwarzen Rahmen der Säule myGLCD.setColor(0, 0, 0); myGLCD.drawRect(x+50, 0, x, y); // Zeichnet das blaue Rechteck links von der Säule myGLCD.setColor(114, 198, 206); myGLCD.fillRect(x-1, 0, x-3, y);
// Die untere Säule
myGLCD.setColor(114, 198, 206); myGLCD.fillRect(x+51, y+80, x+60, 204); myGLCD.setColor(0, 200, 20); myGLCD.fillRect(x+49, y+81, x+1, 203); myGLCD.setColor(0, 0, 0); myGLCD.drawRect(x+50, y+80, x, 204); myGLCD.setColor(114, 198, 206); myGLCD.fillRect(x-1, y+80, x-3, 204); } // Zeichnet die Punktzahl myGLCD.setColor(0, 0, 0); myGLCD.setBackColor(221, 216, 148); myGLCD.setFont(BigFont); myGLCD.printNumI(Score, 100, 220); }
//====== drawBird() - Benutzerdefinierte Funktion
void drawBird(int y) { // Zeichnet den Vogel - Bitmap myGLCD.drawBitmap (50, y, 35, 30, bird01); // Zeichnet blaue Rechtecke über und unter dem Vogel, um seinen vorherigen Zustand zu löschen myGLCD.setColor(114, 198, 206); myGLCD.fillRoundRect(50, y, 85, y-6); myGLCD.fillRoundRect(50, y+30, 85, y+36); } //======== gameOver () - Benutzerdefinierte Funktion void gameOver () { delay (3000); // 1 Sekunde // Löscht den Bildschirm und druckt den Text myGLCD.clrScr(); myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(BigFont); myGLCD.print("GAME OVER", CENTER, 40); myGLCD.print("Ergebnis:", 100, 80); myGLCD.printNumI(Score, 200, 80); myGLCD.print("Neustart…", MITTE, 120); myGLCD.setFont(SevenSegNumFont); myGLCD.printNumI(2, MITTE, 150); Verzögerung (1000); myGLCD.printNumI(1, MITTE, 150); Verzögerung (1000); // Schreibt die höchste Punktzahl in das EEPROM if (score > maximumScore) { höchsterScore = Score; EEPROM.write(0, höchste Punktzahl); } // Setzt die Variablen auf Startpositionswerte zurück xP=319; yB = 50; Fallrate=0; Punktzahl = 0; lastSpeedUpScore = 0; Bewegungsrate = 3; gameStarted = false; // Spiel neu starten initiieGame(); }
Schritt 3: Fertig
Wir haben die Schaltung erstellt und den Code kompiliert. Jetzt müssen wir nur noch den Arduino Mega anschließen und das Spiel spielen.
Hier habe ich einen Link zu einem Video, das zeigt, wie dieses Spiel funktioniert und was zu tun ist, um es einzurichten:
drive.google.com/file/d/18hKQ8v2w2OkM_std-…
Lassen Sie mich unten wissen, wenn Sie irgendwelche Probleme haben.