Cuprins:
- Pasul 1: Lista componentelor:
- Pasul 2: Conexiune hardware
- Pasul 3: Programare
- Pasul 4: Rezultatul experimentului
Video: NeoPixels Matrix Game Joc Șarpe: 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Vă mai amintiți jocul de șarpe pe care l-am jucat pe cutia noastră de joc sau pe mobil în timpul copilăriei noastre? Astăzi vom învăța cum să facem un joc de șarpe cu 8 * 8 NeoPixels Matrix. Alegem Arduino uno ca centru de control și modul Joystick Breakout pentru a controla șarpele.
Pasul 1: Lista componentelor:
Hardware:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X LED flexibil 64 RGB 8 * 8 NeoPixels Matrix
1 X Joystick Breakout module BKOUT_MD01
3 X Linia de ghidare
Software:
IDE Arduino
Pasul 2: Conexiune hardware
Conectați NeoPixels la pinul D2.
„X” pe modulul de separare a joystick-ului conectați pinul A0 pe placa Arduino UNO, „Y” conectați pinul A1, „K” conectați pinul A2.
Pasul 3: Programare
P # include
#define PIN 2 // Pin de ieșire #define MAX_LED 64 // Cantitatea de margele uint32_t c; int a = 0, număr; char sign huan = 0, ci = 0; nesemnat u = 40; // Dimensiunea fontului grupului de cuvinte fără semn char = 0; Culoare caractere nesemnate [3]; caractere nesemnate 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 lumină de caractere nesemnată [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},}; caractere de caractere nesemnate [8] = // Setați cuvântul de trimis {{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]; viteza intS = 400; // Viteza inițială a scorului șarpelui; // Scor joc int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Coordonata alimentelor int SX, SY; // Coordonata capului de șarpe int CHEIE, K; int Activat; // Activați repornirea jocului char sx [64]; // Coordonata caracterului corpului șarpelui [64]; Adafruit_NeoPixel strip = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); void RANDOM () {A: FX = random (0, 7); FY = aleatoriu (0, 7); for (int i = 0; i <3 + scor; i ++) // Preveniți afișarea alimentelor pe corpul șarpelui {if (FX == sx && FY == sy ) mergeți la A; }} void myDelay (unsigned int Time) {// În timpul perioadei de întârziere a mișcării șarpelui, trebuie să facem ceva de genul sclipici alimentar și să citim direcția Joystick pentru (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; }} // Aici puteți compara dacă direcția tastaturii este opusă direcției de mișcare a șarpelui. Dacă este opus, renunțați la tastatură. / ************************************************** ************************************************** ************************************************** ************************************************** ******** / void gameover () {// Odată ce programul Gameover sa oprit, apăsați butonul central pentru a reporni jocul. valoare de caracter nesemnată, y; Culoare [0] = aleatoriu (3, 18); // Setați culoarea. Parametrul este R G B, intervalul 0-255. Culoare [1] = aleatoriu (3, 18); Culoare [2] = aleatoriu (3, 18); c = strip. Color (Color [1], Color [0], Color [2]); valoare = scor / 10; valoare = valoare * 4; y = 0; for (număr = valoare; număr <valoare + 4; număr ++) {pentru (caracter nesemnificat vertical = 0; vertical <8; vertical ++) {afișează [y] [vertical] = caracter [număr] [vertical]; } y ++; } valoare = scor% 10; valoare = valoare * 4; for (număr = valoare; număr <valoare + 4; număr ++) {pentru (caracter nesemnificat vertical = 0; vertical <8; vertical ++) {afișează [y] [vertical] = caracter [număr] [vertical]; } y ++; } for (unsigned char horizontal = 0; horizontal <8; horizontal ++) {for (unsigned char vertical = 0; vertical <8; vertical ++) {if (displayscore [horizontal] [vertical] == 1) // Judecă dacă lumina este pornit. {strip.setPixelColor (ușor [orizontal] [vertical], c); } else strip.setPixelColor (ușor [orizontal] [vertical], 0); }} strip.show (); // Trimitere date întârziere (5000); K = 0; // Resetați direcția joystick sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Resetați scorul coordonatelor șarpelui = 0; // Resetați viteza scorului jocului S = 400; // Viteza inițială a șarpelui} void setup () {Serial.begin (9600); // Inițializați biblioteca strip.begin (); // Trimite date. Valoarea implicită a culorii fiecărui punct este 0. Deci, fiecare punct nu este iluminat la început. strip.show (); K = 0; // Resetați direcția Joystick sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Resetați scorul coordonatelor șarpelui = 0; // Resetați scorul jocului Culoare [0] = aleatoriu (3, 18); // Setați culoarea. Parametrul este R G B, intervalul 0-255. Culoare [1] = aleatoriu (3, 18); Culoare [2] = aleatoriu (3, 18); c = strip. Color (Color [1], Color [0], Color [2]); // Verde Roșu Albastru // Setați culoarea pentru (număr = 0; număr <24; număr ++) {strip.setPixelColor (mergeți [număr], c); } strip.show (); // Trimitere date întârziere (2000); ALEATORIU(); // Produceți alimente} void mobile () {KEY = K; // Fiecare mișcare a șarpelui schimbă direcția o dată. if (KEY == 8) // Mișcarea în sus a șarpelui {for (int i = 2 + scor; i> 0; i--) {sx = sx [i - 1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; if (sy [0] <0) // Treci dincolo de graniță și continuă pe cealaltă parte sy [0] = 7; } else if (KEY == 5) // Șarpe mișcare descendentă {for (int i = 2 + scor; i> 0; i--) {sx = sx [i - 1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; if (sy [0]> 7) // Treceți dincolo de graniță și continuați pe cealaltă parte sy [0] = 0; } else if (KEY == 4) // Snake left movement {for (int i = 2 + scor; i> 0; i--) {sx = sx [i - 1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; if (sx [0] <0) // Treceți dincolo de graniță și continuați pe cealaltă parte sx [0] = 7; } else if (KEY == 6) // Snake right movement {for (int i = 2 + scor; i> 0; i--) {sx = sx [i - 1]; sy = sy [i - 1]; } sx [0] = sx [0] + 1; if (sx [0]> 7) // Treceți dincolo de graniță și continuați pe cealaltă parte sx [0] = 0; } // Mutați corpul șarpelui cu butonul} afișează gol () {pentru (număr = 0; număr <64; număr ++) // Ștergeți ecranul {strip.setPixelColor (număr, 0); } strip.show (); Culoare [0] = 40; // Setați culoarea. Parametrul este R G B, intervalul 0-255. Culoare [1] = 0; Culoare [2] = 0; c = strip. Color (Color [1], Color [0], Color [2]); // Verde Roșu Albastru // Setați culoarea x = lumină [FX] [FY]; // Afișați food strip.setPixelColor (x, c); Culoare [0] = aleatoriu (3, 18); // Setați culoarea. Parametrul este R G B, intervalul 0-255. Culoare [1] = aleatoriu (3, 18); Culoare [2] = aleatoriu (3, 18); c = strip. Color (Color [1], Color [0], Color [2]); // Verde Roșu Albastru // Setați culoarea pentru (int i = 2 + scor; i> 0; i--) // Afișați corpul șarpelui {x = light [sx [sy ; strip.setPixelColor (x, c); } Culoare [0] = 0; // Setați culoarea. Parametrul este R G B, intervalul 0-255. Culoare [1] = 40; Culoare [2] = 0; c = strip. Color (Color [1], Color [0], Color [2]); // Verde Roșu Albastru // Setați culoarea x = light [sx [0] [sy [0]; // Afișați strip head head de șarpe.setPixelColor (x, c); strip.show (); // Trimite date} void loop () {mobil (); myDelay (speedS); // În termen de () este timpul de întârziere. afișează (); SX = sx [0]; SY = sy [0]; // Obțineți coordonatele capului de șarpe pentru (int i = 1; i <= 2 + scor; i ++) {if (SX == sx && SY == sy ) gameover (); } // Judecă dacă capul de șarpe și-a atins corpul. Dacă este atins, treceți la GameOver. if (SY == FY && SX == FX) {RANDOM (); scor ++; Culoare [0] = 40; // Setați culoarea. Parametrul este R G B, intervalul 0-255. Culoare [1] = 0; Culoare [2] = 0; c = strip. Color (Color [1], Color [0], Color [2]); // Verde Roșu Albastru // Setați culoarea x = luminos [FX] [FY]; // Afișați food strip.setPixelColor (x, c); strip.show (); // Trimiteți date dacă (! (scor% 5)) {// Accelerați viteza șarpelui în funcție de scor. La fiecare 5 alimente consumate, se adaugă 100 ms. speedS = speedS - 50; if (speedS <150) // Limita inferioară este de 200ms. Dacă viteza este mai mică de 200ms, viteza rămâne 200ms. vitezaS = 150; }} // Judecă dacă mâncarea este consumată. Dacă șarpele a mâncat alimente, atunci plus scoruri și regenerarea alimentelor la întâmplare. }
Rezultatul experimentului
Pasul 4: Rezultatul experimentului
Citiri relative:
FreaksBot Bluetooth Car
Aprindeți First Bead pe 8 * 8 NeoPixels Matrix cu Arduino
Micro: bit Experiment 05: LED RGB - Elecfreaks Mirco: bit Starter Kit Course
Afișare produs vineri: Set de lipire cu afișaj cu spectru de frecvență cu muzică LED
Utilizați ElecFreaks Micro: bit Tinker Kit pentru a crea o lumină inteligentă
Recomandat:
Robot șarpe imprimat 3D: 7 pași (cu imagini)
Robot de șarpe imprimat 3D: Când mi-am luat imprimanta 3D, am început să mă gândesc ce pot face cu el. Am tipărit o mulțime de lucruri, dar am vrut să fac o construcție întreagă folosind imprimarea 3D. Apoi m-am gândit să fac un animal robot. Prima mea idee a fost să fac un câine sau un păianjen, dar o
Șarpe: mașina inutilă: 5 pași
Șarpe: Mașina inutilă: Știi când erai copil și joci șarpe pe Nokia? La un moment dat, șarpele ar începe să-și alerge propria coadă și atunci ai știut că jocul era pe punctul de a se termina. Am decis să transformăm acest lucru într-un robot, doar că jocul niciodată
Șarpe pe un panou: 3 pași (cu imagini)
Snake on a Breadboard: " Ai jocuri pe telefonul tău? &Quot; " Nu exact. " Introducere: Simplu de controlat, ușor de programat și imortalizat de Nokia 6110, Snake a devenit un proiect preferat printre ingineri. A fost implementat în orice, de la matrice LED, L
Joc Șarpe: 4 pași
Joc cu șarpe: Bună ziua, astăzi, vă voi arăta cum să creați un joc de șarpe de bază în Python și să uimiți prietenii în această vacanță. Acest lucru este foarte simplu de care aveți nevoie doar de Python 3 și instalarea pygame. În acest instructable am adăugat un videoclip despre cum se instalează pygame. După
Jucării adaptabile la comutare: șarpe controlat de la distanță cu ou accesibil !: 7 pași (cu imagini)
Jucării adaptabile la comutare: șarpe controlat de la distanță cu ou! În multe cazuri, copiii care au nevoie de jucăriile adaptate nu pot să