Sommario:
- Passaggio 1: elenco dei componenti:
- Passaggio 2: connessione hardware
- Passaggio 3: programmazione
- Passaggio 4: risultato dell'esperimento
Video: NeoPixel Matrix:Gioco del serpente: 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
Ricordi ancora il gioco del serpente che abbiamo giocato sulla nostra scatola di gioco o sul cellulare durante la nostra infanzia? Oggi impareremo come creare un gioco di serpenti con NeoPixel Matrix 8*8. Scegliamo Arduino uno come centro di controllo e modulo di breakout del Joystick per controllare il serpente.
Passaggio 1: elenco dei componenti:
Hardware:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X 64 LED RGB flessibili 8 * 8 matrice NeoPixel
1 X Joystick modulo breakout BKOUT_MD01
3 X Linee Guida
Software:
Arduino IDE
Passaggio 2: connessione hardware
Collega NeoPixel al pin D2.
"X" sul modulo di breakout del Joystick collega il pin A0 sulla scheda Arduino UNO, "Y" collega il pin A1, "K" collega il pin A2.
Passaggio 3: programmazione
P#include
#define PIN 2 //Output Pin #define MAX_LED 64 //Quantità di cordone uint32_t c; int a = 0, numero; unsigned char huan = 0, ci = 0; carattere senza segno u = 40; //La dimensione del carattere del gruppo di parole unsigned char x = 0; carattere non firmato Colore[3]; unsigned char go = {2, 3, 4, 5, 9, 14, 17, 20, 22, 26, 27, 29, 34, 35, 36, 37, 41, 46, 49, 54, 58, 59, 60, 61}; //24 unsigned char light[8][8] = { {0, 1, 2, 3, 4, 5, 6, 7}, {15, 14, 13, 12, 11, 10, 9, 8}, {16, 17, 18, 19, 20, 21, 22, 23}, {31, 30, 29, 28, 27, 26, 25, 24}, {32, 33, 34, 35, 36, 37, 38, 39}, {47, 46, 45, 44, 43, 42, 41, 40}, {48, 49, 50, 51, 52, 53, 54, 55}, {63, 62, 61, 60, 59, 58, 57, 56}, }; unsigned char character[8] = //Imposta la parola da inviare { {0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, // 0 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, // 1 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 2 {0, 1, 1, 1, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 3 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, // 4 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 5 {0, 1, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 6 {0, 1, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, // 7 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 8 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 9 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0 }, }; unsigned char displayscore [8][8]; int velocitàS = 400; // Velocità iniziale del punteggio di snake int; // Punteggio di gioco int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Coordinata dell'alimento int SX, SY; // Coordinata della testa di serpente int KEY, K; int Abilitato; // Abilita il riavvio del gioco char sx[64]; //Coordinate del corpo del serpente char sy[64]; Striscia Adafruit_NeoPixel = Adafruit_NeoPixel(MAX_LED, PIN, NEO_RGB + NEO_KHZ800); void CASUALE() { A: FX = casuale(0, 7); FY = casuale(0, 7); for (int i = 0; i < 3 + punteggio; i++) //Previene la visualizzazione del cibo sul corpo del serpente { if (FX == sx && FY == sy) goto A; } } void myDelay(unsigned int Time) { // Durante il periodo di ritardo del movimento del serpente, dobbiamo fare qualcosa come il cibo glitterato e leggere la direzione del Joystick for (int t = 1; t 950 && KEY != 5) { K = 8; } else if (yValue < 50 && KEY != 8) { K = 5; } else if (xValue 950 && KEY != 4) { K = 6; } } // Qui puoi confrontare se la direzione della tastiera è opposta alla direzione di movimento del serpente. Se è il contrario, rinuncia alla tastiera. /************************************************** ************************************************** ************************************************** ************************************************** ********/ void gameover() { // Una volta terminato il programma Gameover, premi il pulsante centrale per riavviare il gioco. valore di carattere senza segno, y; Colore[0] = casuale(3, 18); // Imposta colore. Il parametro è R G B, intervallo 0-255. Colore[1] = casuale(3, 18); Colore[2] = casuale(3, 18); c = striscia. Colore(Colore[1], Colore[0], Colore[2]); valore = punteggio / 10; valore = valore * 4; y = 0; for (numero = valore; numero < valore + 4; numero++) { for (carattere senza segno verticale = 0; verticale < 8; verticale++) { displayscore[y][verticale] = carattere[numero][verticale]; } y++; } valore = punteggio % 10; valore = valore * 4; for (numero = valore; numero < valore + 4; numero++) { for (carattere senza segno verticale = 0; verticale < 8; verticale++) { displayscore[y][verticale] = carattere[numero][verticale]; } y++; } for (unsigned char orizzontale = 0; orizzontale < 8; orizzontale++) { for (unsigned char vertical = 0; verticale < 8; verticale++) { if (displayscore[orizzontale][verticale] == 1) //Giudica se la luce è acceso. { strip.setPixelColor(light[horizontal][vertical], c); } else strip.setPixelColor(light[horizontal][vertical], 0); } } strip.show();//Invia ritardo dati(5000); K = 0; // Reimposta direzione Joystick sx[0] = 2; sx[1] = 1; sx[2] = 0; si[0] = 1; si[1] = 1; si[2] = 1; // Reimposta il punteggio delle coordinate del serpente = 0; // Reimposta la velocità del punteggio di giocoS = 400; // La velocità iniziale di snake } void setup() { Serial.begin(9600); // Inizializza la libreria strip.begin(); // Invia i dati. Predefinito il colore di ogni punto come 0. Quindi ogni punto non è illuminato all'inizio. strip.show(); K = 0; // Reimposta la direzione del Joystick sx[0] = 2; sx[1] = 1; sx[2] = 0; si[0] = 1; si[1] = 1; si[2] = 1; // Reimposta il punteggio delle coordinate del serpente = 0; // Resetta il punteggio del gioco Colour[0] = random(3, 18); // Imposta colore. Il parametro è R G B, intervallo 0-255. Colore[1] = casuale(3, 18); Colore[2] = casuale(3, 18); c = striscia. Colore(Colore[1], Colore[0], Colore[2]); //Verde Rosso Blu // Imposta il colore per (numero = 0; numero <24; numero++) { strip.setPixelColor(go[numero], c); } strip.show();// Invia ritardo dati(2000); A CASO(); //Produci cibo } void mobile() { KEY = K; //Ogni movimento del serpente fa cambiare direzione per una volta. if (KEY == 8) // Snake movimento verso l'alto { for (int i = 2 + punteggio; i> 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sy[0] = sy[0] - 1; if (sy[0] <0) // Supera il confine e continua dall'altra parte sy[0] = 7; } else if (KEY == 5) // Snake movimento verso il basso { for (int i = 2 + punteggio; i> 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sy[0] = sy[0] + 1; if (sy[0] > 7) // Supera il confine e continua dall'altra parte sy[0] = 0; } else if (KEY == 4) // Movimento sinistro del serpente { for (int i = 2 + punteggio; i > 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sx[0] = sx[0] - 1; if (sx[0] <0) // Supera il confine e continua dall'altra parte sx[0] = 7; } else if (KEY == 6) // Snake movimento a destra { for (int i = 2 + punteggio; i> 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sx[0] = sx[0] + 1; if (sx[0] > 7) // Supera il confine e continua dall'altra parte sx[0] = 0; } // Sposta il corpo del serpente con il pulsante } void display() { for (numero = 0; numero <64; numero++) // Cancella lo schermo { strip.setPixelColor(numero, 0); } strip.show(); Colore[0] = 40; // Imposta il colore. Il parametro è R G B, intervallo 0-255. Colore[1] = 0; Colore[2] = 0; c = striscia. Colore(Colore[1], Colore[0], Colore[2]); //Verde Rosso Blu // Imposta colore x = light[FX][FY]; //Visualizza il cibo strip.setPixelColor(x, c); Colore[0] = casuale(3, 18); // Imposta il colore. Il parametro è R G B, intervallo 0-255. Colore[1] = casuale(3, 18); Colore[2] = casuale(3, 18); c = striscia. Colore(Colore[1], Colore[0], Colore[2]); //Verde Rosso Blu // Imposta il colore per (int i = 2 + punteggio; i> 0; i--) //Visualizza il corpo del serpente { x = light[sx[sy; strip.setPixelColor(x, c); } Colore[0] = 0; // Imposta il colore. Il parametro è R G B, intervallo 0-255. Colore[1] = 40; Colore[2] = 0; c = striscia. Colore(Colore[1], Colore[0], Colore[2]); //Verde Rosso Blu // Imposta colore x = light[sx[0][sy[0]; //Mostra la testa di serpente strip.setPixelColor(x, c); strip.show();//Invia dati } void loop() { mobile(); mioRitardo(velocità); // Entro() è il tempo di ritardo. mostra(); SX = sx[0]; SY = sy[0]; // Ottieni la coordinata della testa di serpente for (int i = 1; i <= 2 + punteggio; i++) { if (SX == sx && SY == sy) gameover(); } // Giudica se la testa di serpente ha toccato il suo corpo. Se toccato, inoltra a GameOver. if (SY == FY && SX == FX) { RANDOM(); punteggio ++; Colore[0] = 40; // Imposta il colore. Il parametro è R G B, intervallo 0-255. Colore[1] = 0; Colore[2] = 0; c = striscia. Colore(Colore[1], Colore[0], Colore[2]); //Verde Rosso Blu // Imposta colore x = light[FX][FY]; //Visualizza il cibo strip.setPixelColor(x, c); strip.show();//Send data if (!(score % 5)) { // Accelera la velocità del serpente in base al punteggio. Ogni 5 cibi mangiati, accelera di 100 ms. velocitàS = velocitàS - 50; if (speedS < 150) // Il limite inferiore è 200 ms. Se la velocità è inferiore a 200 ms, la velocità rimane di 200 ms. velocitàS = 150; } } // Giudica se il cibo viene mangiato. Se il serpente ha mangiato cibo, allora più punteggi e rigenera il cibo in modo casuale. }
Risultato dell'esperimento
Passaggio 4: risultato dell'esperimento
Letture relative:
FreaksBot Bluetooth Car
Accendi il primo tallone su 8*8 NeoPixel Matrix con Arduino
Micro:bit Esperimento 05: LED RGB -- Corso Elecfreaks Mirco: bit Starter Kit
Friday Product Post: Kit di saldatura per display a spettro di frequenza musicale a LED
Usa ElecFreaks Micro:bit Tinker Kit per creare una luce intelligente
Consigliato:
Controller di gioco fai-da-te basato su Arduino - Controller di gioco Arduino PS2 - Giocare a Tekken con il gamepad Arduino fai da te: 7 passaggi
Controller di gioco fai-da-te basato su Arduino | Controller di gioco Arduino PS2 | Giocare a Tekken con il gamepad Arduino fai da te: Ciao ragazzi, giocare è sempre divertente, ma giocare con il tuo controller di gioco personalizzato fai-da-te è più divertente. Quindi creeremo un controller di gioco usando arduino pro micro in queste istruzioni
Gioco del serpente: 4 passaggi
Snake Game: Ciao ragazzi, oggi vi mostrerò come creare un semplice gioco di serpenti in Python e stupire gli amici in questa vacanza. Questo è molto semplice, basta installare Python 3 e pygame. In questo tutorial ho aggiunto un video su come installare pygame. Dopo
Gioco del serpente OLED Arduino: 3 passaggi
Arduino OLED Snake Game: Ciao e benvenuto, ai nostri istruttori su come creare e Arduino OLED Game, questo progetto è nato mentre stavamo tentando di realizzare il nostro primo gioco in assoluto con un arduino, quindi abbiamo pensato quale fosse il modo migliore per iniziare rispetto al Nokia classico Snake (beh almeno
Controller di gioco Arduino + Gioco Unity: 5 passaggi
Controller di gioco Arduino + Gioco Unity: in questo tutorial ti mostrerò come costruire/programmare un controller di gioco Arduino che può connettersi a unity
Gioco del serpente in C: 8 passaggi
Gioco di Snake in C: Il gioco Snake era popolare nei vecchi telefoni cellulari che possono essere facilmente sviluppati usando il programma c. Per costruire questo progetto è necessaria una conoscenza di base della sintassi c. Esempio: ciclo for, ciclo while, ecc. Con la creazione di questo tipo di progetto di gioco, la tua programmazione