Table des matières:
- Étape 1: liste des composants:
- Étape 2: connexion matérielle
- Étape 3: Programmation
- Étape 4: résultat de l'expérience
Vidéo: Matrice NeoPixels:Jeu Serpent : 4 Étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Vous souvenez-vous encore du jeu de serpent auquel nous jouions sur notre boîte de jeu ou sur notre mobile pendant notre enfance ? Aujourd'hui, nous allons apprendre à créer un jeu de serpent avec une matrice NeoPixels 8*8. Nous choisissons Arduino uno comme centre de contrôle et module de dérivation Joystick pour contrôler le serpent.
Étape 1: liste des composants:
Matériel:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X Matrice NeoPixels Flexible 64 RGB LED 8 * 8
1 X module de dérivation Joystick BKOUT_MD01
3 X Ligne de guidage
Logiciel:
IDE Arduino
Étape 2: connexion matérielle
Connectez NeoPixels à la broche D2.
"X" sur le module de dérivation Joystick connecte la broche A0 sur la carte Arduino UNO, "Y" connecte la broche A1, "K" connecte la broche A2.
Étape 3: Programmation
P#inclure
#define PIN 2 //Broche de sortie #define MAX_LED 64 //Quantité de perle uint32_t c; int a = 0, nombre; car non signé huan = 0, ci = 0; caractère non signé u = 40; //La taille de la police du groupe de mots unsigned char x = 0; caractère non signé Couleur[3]; car non signé 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 car light sans signe[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] = //Définir le mot à envoyer { {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, 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 }, }; caractère non signé displaycore [8][8]; vitesseS int = 400; // Vitesse initiale du score int du serpent; // Score du jeu int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Coordonnée de la nourriture int SX, SY; // Coordonnée de la tête de serpent int KEY, K; entier Activé; // Permet de redémarrer le jeu char sx[64]; //Coordonnée du corps du serpent char sy[64]; Bande Adafruit_NeoPixel = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); void RANDOM() { A: FX = random(0, 7); FY = aléatoire (0, 7); for (int i = 0; i < 3 + score; i++) // Empêcher l'affichage de nourriture sur le corps du serpent { if (FX == sx && FY == sy) goto A; } } void myDelay(unsigned int Time) { // Pendant la période de retard du mouvement du serpent, nous devons faire quelque chose comme des paillettes alimentaires et lire la direction du Joystick pour (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; } } // Ici, vous pouvez comparer si la direction du clavier est opposée à la direction du mouvement du serpent. Si c'est en face, alors abandonnez le clavier. /****************************************************** ******************************************************** ************************************************** ******************************************************** ********/ void gameover() { // Une fois le programme Gameover arrêté, appuyez sur le bouton central pour relancer le jeu. valeur de caractère non signé, y; Couleur[0] = aléatoire(3, 18); // Définir la couleur. Le paramètre est R V B, plage 0-255. Couleur[1] = aléatoire (3, 18); Couleur[2] = aléatoire(3, 18); c = bande. Couleur(Couleur[1], Couleur[0], Couleur[2]); valeur = note/10; valeur = valeur * 4; y = 0; for (nombre = valeur; nombre < valeur + 4; nombre++) { for (caractère non signé vertical = 0; vertical < 8; vertical++) { displaycore[y][vertical] = character[nombre][vertical]; } y++; } valeur = note % 10; valeur = valeur * 4; for (nombre = valeur; nombre < valeur + 4; nombre++) { for (caractère non signé vertical = 0; vertical < 8; vertical++) { displaycore[y][vertical] = character[nombre][vertical]; } y++; } for (unsigned char horizontal = 0; horizontal < 8; horizontal++) { for (unsigned char vertical = 0; vertical < 8; vertical++) { if (displayscore[horizontal][vertical] == 1) // Juger si la lumière est sur. { strip.setPixelColor(light[horizontal][vertical], c); } else strip.setPixelColor(light[horizontal][vertical], 0); } } strip.show();//Envoyer le délai de données (5000); K = 0; // Réinitialiser la direction du joystick sx[0] = 2; sx[1] = 1; sx[2] = 0; sy[0] = 1; sy[1] = 1; sy[2] = 1; // Réinitialiser le score des coordonnées du serpent = 0; // Réinitialiser le score speedS = 400; // La vitesse initiale du serpent } void setup() { Serial.begin(9600); // Initialiser la bibliothèque strip.begin(); // Envoyer des données. La couleur par défaut de chaque point est 0. Ainsi, chaque point n'est pas illuminé au début. strip.show(); K = 0; // Réinitialise la direction du Joystick sx[0] = 2; sx[1] = 1; sx[2] = 0; sy[0] = 1; sy[1] = 1; sy[2] = 1; // Réinitialiser le score des coordonnées du serpent = 0; // Réinitialiser le score du jeu Colour[0] = random(3, 18); // Définir la couleur. Le paramètre est R V B, plage 0-255. Couleur[1] = aléatoire (3, 18); Couleur[2] = aléatoire(3, 18); c = bande. Couleur(Couleur[1], Couleur[0], Couleur[2]); //Vert Rouge Bleu // Définir la couleur pour (nombre = 0; nombre <24; nombre++) { strip.setPixelColor(go[nombre], c); } strip.show();// Délai d'envoi des données (2000); ALÉATOIRE(); //Produire de la nourriture } void mobile() { KEY = K; //Chaque mouvement du serpent fait changer de direction pour une fois. if (KEY == 8) // Mouvement ascendant du serpent { for (int i = 2 + score; i> 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sy[0] = sy[0] - 1; if (sy[0] <0) // Aller au-delà de la frontière et continuer de l'autre côté sy[0] = 7; } else if (KEY == 5) // Mouvement vers le bas du serpent { for (int i = 2 + score; i> 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sy[0] = sy[0] + 1; if (sy[0] > 7) // Aller au-delà de la frontière et continuer de l'autre côté sy[0] = 0; } else if (KEY == 4) // Mouvement vers la gauche du serpent { 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) // Aller au-delà de la frontière et continuer de l'autre côté sx[0] = 7; } else if (KEY == 6) // Snake right move { for (int i = 2 + score; i> 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sx[0] = sx[0] + 1; if (sx[0] > 7) // Aller au-delà de la frontière et continuer de l'autre côté sx[0] = 0; } // Déplacer le corps du serpent avec le bouton } void display() { for (number = 0; number <64; number++) // Effacer l'écran { strip.setPixelColor(number, 0); } strip.show(); Couleur[0] = 40; // Définir la couleur. Le paramètre est R G B, plage 0-255. Couleur[1] = 0; Couleur[2] = 0; c = bande. Couleur(Couleur[1], Couleur[0], Couleur[2]); //Vert Rouge Bleu // Définir la couleur x = light[FX][FY]; //Afficher la bande de nourriture.setPixelColor(x, c); Couleur[0] = aléatoire(3, 18); // Définir la couleur. Le paramètre est R G B, plage 0-255. Couleur[1] = aléatoire (3, 18); Couleur[2] = aléatoire(3, 18); c = bande. Couleur(Couleur[1], Couleur[0], Couleur[2]); //Vert Rouge Bleu // Définir la couleur pour (int i = 2 + score; i> 0; i--) // Afficher le corps du serpent { x = light[sx[sy; strip.setPixelColor(x, c); } Couleur[0] = 0; // Définir la couleur. Le paramètre est R G B, plage 0-255. Couleur[1] = 40; Couleur[2] = 0; c = bande. Couleur(Couleur[1], Couleur[0], Couleur[2]); //Vert Rouge Bleu // Définir la couleur x = light[sx[0][sy[0]; //Afficher la bande de tête de serpent.setPixelColor(x, c); strip.show();//Envoyer des données } void loop() { mobile(); monDélai(vitesseS); // Within() est le temps de retard. affiche(); SX = sx[0]; SY = sy[0]; // Récupère les coordonnées de la tête de serpent pour (int i = 1; i <= 2 + score; i++) { if (SX == sx && SY == sy) gameover(); } // Juge si la tête du serpent a touché son corps. Si vous le touchez, passez à GameOver. if (SY == FY && SX == FX) { RANDOM(); note ++; Couleur[0] = 40; // Définir la couleur. Le paramètre est R G B, plage 0-255. Couleur[1] = 0; Couleur[2] = 0; c = bande. Couleur(Couleur[1], Couleur[0], Couleur[2]); //Vert Rouge Bleu // Définir la couleur x = light[FX][FY]; //Afficher la bande de nourriture.setPixelColor(x, c); strip.show();//Envoyer les données if (!(score % 5)) { // Accélérer la vitesse du serpent en fonction du score. Tous les 5 aliments consommés, accélérez 100 ms. vitessesS = vitessesS - 50; if (speedS < 150) // La limite inférieure est de 200 ms. Si la vitesse est inférieure à 200ms, la vitesse reste à 200ms. vitessesS = 150; } } // Juge si la nourriture est mangée. Si le serpent a mangé de la nourriture, alors plus les scores et régénérez la nourriture au hasard. }
Résultat de l'expérience
Étape 4: résultat de l'expérience
Lectures relatives:
FreaksBot Voiture Bluetooth
Allumez la première perle sur une matrice NeoPixels 8 * 8 avec Arduino
Micro:bit Experiment 05: LED RVB -- Elecfreaks Mirco: cours du kit de démarrage bit
Article du vendredi sur le produit: Kit de soudure d'affichage de spectre de fréquence de musique à LED
Utilisez le kit ElecFreaks Micro:bit Tinker pour créer une lumière intelligente
Conseillé:
Robot serpent imprimé en 3D : 7 étapes (avec photos)
Robot serpent imprimé en 3D : lorsque j'ai eu mon imprimante 3D, j'ai commencé à penser à ce que je pouvais faire avec. J'ai imprimé beaucoup de choses mais je voulais faire toute une construction en utilisant l'impression 3D. Puis j'ai pensé à faire un animal robot. Ma première idée était de faire un chien ou une araignée, mais bon
Serpent sur une planche à pain : 3 étapes (avec photos)
Snake on a Breadboard : "Vous avez des jeux sur votre téléphone ?" "Pas exactement."Intro:Simple à contrôler, facile à programmer et immortalisé par le Nokia 6110, Snake est devenu le projet préféré des ingénieurs. Son été mis en œuvre dans n'importe quoi des matrices LED, L
Contrôleur de jeu DIY basé sur Arduino - Contrôleur de jeu Arduino PS2 - Jouer à Tekken avec la manette de jeu DIY Arduino : 7 étapes
Contrôleur de jeu DIY basé sur Arduino | Contrôleur de jeu Arduino PS2 | Jouer à Tekken avec la manette de jeu DIY Arduino : Bonjour les gars, jouer à des jeux est toujours amusant, mais jouer avec votre propre contrôleur de jeu personnalisé DIY est plus amusant. Nous allons donc créer un contrôleur de jeu utilisant arduino pro micro dans cette instructables
Jeu de serpent : 4 étapes
Jeu de serpent : Bonjour les gars, aujourd'hui, je vais vous montrer comment créer un jeu de serpent de base en Python et épater vos amis pendant ces vacances. C'est très simple, vous avez juste besoin d'installer python 3 et pygame. Dans ce instructable, j'ai ajouté une vidéo sur la façon d'installer pygame. Après
Jeu de Serpent en C : 8 Étapes
Game of Snake en C: Le jeu Snake était populaire dans les anciens téléphones mobiles qui peuvent être très facilement dévolus à l'aide du programme c. Pour construire ce projet, vous avez besoin d'une compréhension de base de la syntaxe c. Exemple : boucle for, boucle while, etc. Avec la construction de ce type de jeu, projetez votre programme