Taula de continguts:
- Pas 1: llista de components:
- Pas 2: connexió de maquinari
- Pas 3: Programació
- Pas 4: Resultat de l'experiment
Vídeo: NeoPixels Matrix Game Joc de serps: 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
Encara recordes el joc de serps que vam jugar a la nostra caixa o al mòbil durant la nostra infància? Avui aprendrem a fer un joc de serps amb NeoPixels Matrix 8 * 8. Escollim Arduino uno com a centre de control i mòdul de control de joystick per controlar la serp.
Pas 1: llista de components:
Maquinari:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X Flexible 64 RGB LED 8 * 8 NeoPixels Matrix
1 X mòdul de trencament del joystick BKOUT_MD01
3 X línia de guia
Programari:
IDE Arduino
Pas 2: connexió de maquinari
Connecteu NeoPixels al pin D2.
"X" al mòdul de trencament del joystick connecta el pin A0 a la placa Arduino UNO, el pin A1 "Y", el pin A2 "K".
Pas 3: Programació
P # inclou
#define PIN 2 // Pin de sortida #define MAX_LED 64 // Quantitat de comptes uint32_t c; int a = 0, nombre; unsigned char huan = 0, ci = 0; unsigned char u = 40; // La mida del tipus de lletra del grup de paraules sense signar x = 0; Caràcter sense signar Color [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 llums de caràcters sense signar [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},}; caràcter de caràcter sense signar [8] = // Estableix la paraula que s'enviarà {{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 speedS = 400; // Velocitat inicial de la puntuació int de la serp; // Puntuació del joc int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Coordenada dels aliments int SX, SY; // Coordenada del cap de serp int KEY, K; int Habilitat; // Activa el reinici del joc char sx [64]; // Coordenada del cos de la serp (64); Adafruit_NeoPixel strip = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); void RANDOM () {A: FX = random (0, 7); FY = aleatori (0, 7); for (int i = 0; i <3 + score; i ++) // Eviteu la visualització dels aliments al cos de la serp {if (FX == sx && FY == sy ) aneu A; }} void myDelay (Temps int signat) {// Durant el període de retard del moviment de la serp, hem de fer alguna cosa com purpurina de menjar i llegir la direcció del joystick per a (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; }} // Aquí podeu comparar si la direcció del teclat és oposada a la direcció del moviment de la serp. Si és oposat, renuncieu al teclat. / ************************************************** *************************************************** **************************************************** *************************************************** ******** / void gameover () {// Un cop s'hagi aturat el programa Gameover, premeu el botó central per reiniciar el joc. valor de caràcter sense signar, y; Color [0] = aleatori (3, 18); // Estableix el color. El paràmetre és R G B, rang 0-255. Color [1] = aleatori (3, 18); Color [2] = aleatori (3, 18); c = strip. Color (Color [1], Color [0], Color [2]); valor = puntuació / 10; valor = valor * 4; y = 0; for (número = valor; nombre <valor + 4; número ++) {per (caràcter sense signe vertical = 0; vertical <8; vertical ++) {displayscore [y] [vertical] = caràcter [número] [vertical]; } y ++; } valor = puntuació% 10; valor = valor * 4; for (número = valor; nombre <valor + 4; número ++) {per (caràcter sense signe vertical = 0; vertical <8; vertical ++) {displayscore [y] [vertical] = caràcter [número] [vertical]; } y ++; } for (unsigned char horizontal = 0; horizontal <8; horizontal ++) {for (unsigned char vertical = 0; vertical <8; vertical ++) {if (displayscore [horizontal] [vertical] == 1) // Jutgeu si la llum està activat. {strip.setPixelColor (clar [horitzontal] [vertical], c); } else strip.setPixelColor (clar [horitzontal] [vertical], 0); }} strip.show (); // Retard de les dades d’enviament (5000); K = 0; // Restableix la direcció del joystick sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Restableix la puntuació de les coordenades de la serp = 0; // Restableix la velocitat de puntuació del joc S = 400; // La velocitat inicial de la serp} void setup () {Serial.begin (9600); // Inicialitzar la biblioteca strip.begin (); // Enviar dades. Per defecte, el color de cada punt és 0. Per tant, tots els punts no s’il·luminen al principi. strip.show (); K = 0; // Restableix la direcció del joystick sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Restableix la puntuació de les coordenades de la serp = 0; // Restableix la puntuació del joc Color [0] = aleatori (3, 18); // Estableix el color. El paràmetre és R G B, rang 0-255. Color [1] = aleatori (3, 18); Color [2] = aleatori (3, 18); c = strip. Color (Color [1], Color [0], Color [2]); // Verd Vermell Blau // Estableix el color per a (número = 0; número <24; nombre ++) {strip.setPixelColor (vés [número], c); } strip.show (); // Retard de les dades d’enviament (2000); RANDOM (); // Produir menjar} void mobile () {KEY = K; // Cada moviment de serp fa que la direcció canviï d’una vegada. if (CLAU == 8) // Moviment ascendent de la serp {for (int i = 2 + puntuació; i> 0; i--) {sx = sx [i - 1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; if (sy [0] <0) // Aneu més enllà de la vora i continueu a l’altra banda sy [0] = 7; } else if (CLAU == 5) // Moviment descendent de la serp {for (int i = 2 + puntuació; i> 0; i--) {sx = sx [i - 1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; if (sy [0]> 7) // Aneu més enllà del límit i continueu a l’altra banda sy [0] = 0; } else if (KEY == 4) // Snake left left {for (int i = 2 + score; i> 0; i--) {sx = sx [i - 1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; if (sx [0] <0) // Aneu més enllà de la vora i continueu a l’altra banda sx [0] = 7; } else if (KEY == 6) // Moviment correcte de la serp {for (int i = 2 + puntuació; i> 0; i--) {sx = sx [i - 1]; sy = sy [i - 1]; } sx [0] = sx [0] + 1; if (sx [0]> 7) // Aneu més enllà de la vora i continueu a l’altra banda sx [0] = 0; } // Mou el cos de la serp amb el botó} void displays () {for (number = 0; number <64; number ++) // Esborreu la pantalla {strip.setPixelColor (number, 0); } strip.show (); Color [0] = 40; // Estableix el color. El paràmetre és R G B, rang 0-255. Color [1] = 0; Color [2] = 0; c = strip. Color (Color [1], Color [0], Color [2]); // Verd Vermell Blau // Estableix el color x = clar [FX] [FY]; // Mostra el menjar strip.setPixelColor (x, c); Color [0] = aleatori (3, 18); // Estableix el color. El paràmetre és R G B, rang 0-255. Color [1] = aleatori (3, 18); Color [2] = aleatori (3, 18); c = strip. Color (Color [1], Color [0], Color [2]); // Verd vermell Blau // Estableix el color per a (int i = 2 + puntuació; i> 0; i--) // Mostra el cos de la serp {x = light [sx [sy ; strip.setPixelColor (x, c); } Color [0] = 0; // Estableix el color. El paràmetre és R G B, rang 0-255. Color [1] = 40; Color [2] = 0; c = strip. Color (Color [1], Color [0], Color [2]); // Verd Vermell Blau // Estableix el color x = clar [sx [0] [sy [0]; // Mostra el cap de serp strip.setPixelColor (x, c); strip.show (); // Enviar dades} bucle buit () {mòbil (); myDelay (speedS); // Dins de () és el temps de retard. displays (); SX = sx [0]; SY = sy [0]; // Obteniu la coordenada del cap de serp per a (int i = 1; i <= 2 + puntuació; i ++) {if (SX == sx && SY == sy ) gameover (); } // Jutgeu si el cap de serp va tocar el seu cos. Si el toqueu, reenvieu-lo a GameOver. if (SY == FY && SX == FX) {RANDOM (); puntuació ++; Color [0] = 40; // Estableix el color. El paràmetre és R G B, rang 0-255. Color [1] = 0; Color [2] = 0; c = strip. Color (Color [1], Color [0], Color [2]); // Verd Vermell Blau // Estableix el color x = clar [FX] [FY]; // Mostra el menjar strip.setPixelColor (x, c); strip.show (); // Envia dades if (! (puntuació% 5)) {// Accelera la velocitat de la serp segons la puntuació. Cada 5 aliments menjats s’acceleren a 100 ms. speedS = speedS - 50; if (speedS <150) // El límit inferior és de 200 ms. Si la velocitat és inferior a 200 ms, la velocitat es manté de 200 ms. velocitatS = 150; }} // Jutgeu si es mengen aliments. Si la serp menjava menjar, més puntuacions i regenerar els aliments a l’atzar. }
Resultat de l'experiment
Pas 4: Resultat de l'experiment
Lectures relatives:
FreaksBot Bluetooth Car
Enceneu el First Bead a NeoPixels Matrix 8 * 8 amb Arduino
Micro: bit Experiment 05: LED RGB - Elecfreaks Mirco: bit Starter Kit Course
Divendres Publicació del producte: Kit de soldadura amb pantalla LED de freqüència d’espectre de música
Utilitzeu ElecFreaks Micro: bit Tinker Kit per fer una llum intel·ligent
Recomanat:
DIY SMART LED MATRIX (ESP8266 + WS2812 / NeoPixels): 7 passos (amb imatges)
DIY SMART LED MATRIX (ESP8266 + WS2812 / NeoPixels): aquí teniu la meva introducció a un projecte que em fa molta il·lusió mostrar-vos. Es tracta d’una matriu LED Smart DIY que us permetrà mostrar-hi dades, com ara les estadístiques de YouTube, les estadístiques de Smart Home, com la temperatura, la humitat, poden ser un simple rellotge o simplement
Joc Simon: Joc divertit: 5 passos
Simon Game - Fun Game !: Referència: després d'un llarg cap de setmana, us heu d'esforçar completament per realitzar totes les tasques i treballs dels quals esteu responsables. És hora que ens entrenem el cervell, oi? A més d’aquests jocs avorrits i sense sentit, hi ha un joc anomenat Simon Game
Joc LED Aruduino Fent clic ràpid Joc de dos jugadors: 8 passos
Joc LED Aruduino Fent clic ràpid Joc de dos jugadors: aquest projecte està inspirat en @HassonAlkeim. Si esteu disposat a aprofundir aquí hi ha un enllaç que podeu consultar https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Aquest joc és una versió millorada d’Alkeim. És un
Joc del joc de la vida: 7 passos
Game of Life Kit: The Game of Life Boards són una plataforma escalable per a visualitzacions d'autòmats cel·lulars. Cada placa conté 16 LEDs en una xarxa 4x4, un microcontrolador i una xarxa de comunicacions i distribució d'energia. Amb el firmware disponible, executen Conway
Com comprovar si s'executarà un joc a l'ordinador abans de comprar el joc .: 4 passos
Com comprovar si un joc s’executarà a l’ordinador abans de comprar el joc. Recentment he adquirit Call of Duty 4 a un amic (de franc podria afegir) perquè no funcionaria al seu ordinador. Bé, el seu ordinador és bastant nou i em va desconcertar per què no funcionaria. Així que, després d’un parell d’hores de recerca a Internet, em vaig trobar amb