Table des matières:

Recréer le jeu le plus difficile au monde sur Arduino : 7 étapes
Recréer le jeu le plus difficile au monde sur Arduino : 7 étapes

Vidéo: Recréer le jeu le plus difficile au monde sur Arduino : 7 étapes

Vidéo: Recréer le jeu le plus difficile au monde sur Arduino : 7 étapes
Vidéo: Nigéria : à 9 ans, il est créateur de 35 jeux vidéo et repéré par Google ! 2024, Novembre
Anonim
Image
Image

Ce projet est basé sur un jeu informatique que vous pouvez trouver en ligne. Son nom est "Le jeu le plus dur du monde". J'ai pu le recréer sur l'Arduino à l'aide d'une matrice de LED à quatre modules. Dans ce instructable je vous apprends comment le construire vous-même. Avant d'entrer dans trop de détails, je veux donner un aperçu rapide des étapes que j'ai suivies pour créer ce jeu.

  1. J'ai rassemblé toutes les pièces nécessaires.
  2. J'ai connecté les pièces ensemble.
  3. J'ai écrit un croquis qui utilisait le joystick pour déplacer la LED des joueurs sur tous les modules.
  4. J'ai conçu les premiers obstacles et les ai ajoutés au croquis afin qu'ils imitent le jeu le plus difficile du monde.
  5. J'ai ensuite ajouté du code pour détecter une collision avec les obstacles, ce qui relancera le jeu.
  6. Et puis j'ai conçu deux autres niveaux d'obstacles.

Étape 1: Toutes les pièces

Toutes les pièces
Toutes les pièces
Toutes les pièces
Toutes les pièces

Voici une liste de toutes les pièces dont vous avez besoin:

  1. Un connecteur Arduino UNO et usb:
  2. Un quatre modules 8x8: matrice LED
  3. Un joystick:
  4. 10 fils mâle à femelle:

Étape 2: Comment connecter les pièces à l'Arduino

Comment connecter les pièces à l'Arduino
Comment connecter les pièces à l'Arduino

Comment connecter la matrice LED à l'Arduino

  1. GND va à GND
  2. VCC passe à 5V
  3. DataIn va à la broche numérique 12
  4. CLK va à la broche numérique 11
  5. CS ou LOAD va à la broche numérique 10

Comment connecter le joystick

  1. GND va à GND
  2. 5V passe à 5V
  3. VRx va à la broche analogique A0
  4. VRy va à la broche analogique A1
  5. Le logiciel n'est pas utilisé

La batterie se connecte à la prise 9v pour donner de l'énergie à l'Arduino

Étape 3: Organigramme du programme

Organigramme du programme
Organigramme du programme

L'ovale indique le début du programme.

La première étape consiste à définir tous les obstacles.

Les deux étapes suivantes indiquent la définition des variables et la mise sous tension de tous les modules.

L'étape suivante consiste à régler les LED au premier niveau et à toute autre variable.

Affichez ensuite le niveau auquel se trouve actuellement le joueur.

Le losange indique la lecture du joystick pour voir dans quelle direction il est poussé.

Déplacez ensuite le lecteur dans la direction où le joystick a été poussé.

Vérifiez et voyez si le joueur est entré en collision avec un obstacle.

Si le joueur heurte un obstacle, retournez au premier niveau. Sinon, vérifiez si le joueur a atteint la fin du niveau.

Si le joueur est à la fin du niveau, passez au niveau suivant puis revenez à « Afficher le niveau actuel ». S'ils ne sont pas à la fin, déplacez les obstacles et revenez à « Lire le joystick ».

Étape 4: Programmation du joystick

Bien sûr afin de déplacer le petit point qu'est le joueur, nous avons besoin d'un joystick. et afin de permettre au joystick de déplacer réellement le lecteur, nous devons le coder dans l'IDE Arduino. Vous devez inclure la bibliothèque LedControl que vous pouvez trouver en allant dans le menu d'esquisse> Inclure les bibliothèques> Gérer les bibliothèques et rechercher LedControl. Voici à quoi ressemble le code du joystick.

#include "LedControl.h"

int DataIn = 12; int CLK = 11; int DIN = 10; LedControl lc=LedControl(DataIn, CLK, DIN, 4); //Crée un objet pour quatre modules int delaytime = 50; // vitesse à laquelle le jeu s'exécute int joystick_RtLt, joystick_UpDn; int joueurs_x = 0; //position horizontale des joueurs de 0 à 31 int players_y = 3; //position verticale des joueurs de 0 à 7 int ligne, colonne, module; void setup() { initialize_modules(); // activer et définir les quatre modules led } void loop() { move_player(); //démarrer la boucle en vérifiant si le joueur bouge delay(delaytime); } void initialize_modules(){ lc.shutdown(0, false); // démarre le module 0 lc.setIntensity(0, 1); lc.shutdown(1, faux); // démarre le module 1 lc.setIntensity(1, 1); lc.shutdown(2, faux); // démarre le module 2 lc.setIntensity(2, 1); lc.shutdown(3, faux); // démarre le module 3 lc.setIntensity(3, 1); lc.clearDisplay(0); // efface le module 0 } void move_player(){ module = players_x/8; //définit sur quel module se trouve le joueur colonne = joueurs_x%8; //définit la colonne où se trouve le joueur sur le module row = players_y; lc.setLed(module, ligne, colonne, faux); // éteint la led à la position actuelle du joueur joystick_RtLt = analogRead(A0)/204 - 2; //lisez le joystick X et la carte allant de 2 à -2 if(joystick_RtLt > 0) //lorsque le joystick est à droite players_x++; // aller à droite else if(joystick_RtLt 0) // si le joystick est à gauche et pas au début players_x--; // déplacer vers la gauche joystick_UpDn = analogRead(A1)/204 - 2; //lire le Y-joystick et la plage de carte de 2 à -2 if(joystick_UpDn 0) //si le joystick est en bas et le joueur n'est pas en bas players_y--; //déplacer vers le bas else if(joystick_UpDn > 0 && players_y < 7) //si le joystick est en haut et le joueur n'est pas en haut players_y++; //monter module = joueurs_x/8; //définir le module sur la nouvelle position des joueurs colonne = joueurs_x%8; //définir la colonne sur la nouvelle position des joueurs row = players_y; //définir la ligne sur la nouvelle position des joueurs lc.setLed(module, row, column, true); //allumer la led à la nouvelle position du joueur }

Maintenant que vous avez ajouté le joystick, travaillons sur le premier obstacle !

Étape 5: Le premier niveau

Bon, maintenant il est temps d'entrer dans la partie principale du programme, les obstacles ! Les obstacles sont ce qui en fait vraiment le « jeu le plus difficile au monde ». Donc, si vous voulez réellement jouer au jeu, vous devez ajouter ceci à votre code:

octet obstacle[LEVELS][SCENES][COLUMNS][ROWS] = { //trois niveaux, 8 scènes, 8 colonnes, 8 lignes

{{{1, 1, 1, 1, 1, 1, 0, 0}, //premier niveau, première scène {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, 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}}, {{1, 1, 1, 1, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, //premier niveau, deuxième scène {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 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}}, {{1, 1, 1, 1, 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, //premier niveau, troisième scène {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 0, 0, 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}}, {{1, 1, 1, 0, 0, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, //premier niveau, quatrième scène {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 0, 0, 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}}, {{1, 1, 0, 0, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, //premier niveau, cinquième scène {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 0, 0, 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}}, {{1, 0, 0, 1, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, //premier niveau, sixième scène {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, { 1, 1, 1, 1, 1, 0, 0, 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, 1, 1, 1, 1, 1}, //premier niveau, septième scène {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, 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}}, {{0, 1, 1, 1, 1, 1, 1, 1}, //premier niveau, huitième scène {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, 1, 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}}}, void setup() { initialize_modules(); //activer et définir les quatre modules led start_level(0); boucle vide() { move_player(); //démarrer la boucle en vérifiant si le joueur bouge if (collision()){ //vérifier le niveau de collision = 0; //si la collision est vraie, réinitialiser le niveau start_level(level); // redémarrer le jeu } else if(delay_count == obstacle_delay){ // si aucune collision ne déplace l'obstacle tous les deux retards moveobstacle(); delay_count = 0; } else delay_count++; retard (délai); //retard par vitesse de jeu }

Et c'est le premier obstacle ! Si vous en avez marre de ce premier niveau, vous pouvez toujours changer les octets, n'oubliez pas que vous devez avoir huit scènes différentes ! Passons à l'étape suivante, la détection de collision !

Étape 6: Détection de collision

Cette étape est une autre partie importante du jeu, sans elle, il n'y aurait pas beaucoup de défi ! vous pourriez simplement vous frayer un chemin à travers les obstacles sans aucune conséquence ! ce ne serait pas très amusant non? alors rendons le jeu plus stimulant (et beaucoup plus divertissant !) en ajoutant cette section du programme:

boucle vide() {

Déplacer le joueur(); //démarrer la boucle en vérifiant si le joueur bouge if (collision()){ //vérifier le niveau de collision = 0; //si la collision est vraie, réinitialiser le niveau start_level(level); // redémarrer le jeu } else if(delay_count == obstacle_delay){ // si aucune collision ne déplace l'obstacle tous les deux retards moveobstacle(); delay_count = 0; } else delay_count++; retard (délai); //retard par la vitesse du jeu } int collision(){ //vérifie si le joueur rencontre un obstacle dans le module de scène = players_x/8; colonne = joueurs_x%8; ligne = joueurs_y; if(module > 0) if(obstacle[level][scene][column][row] == 1) //si la position du joueur est la même que l'obstacle return(1); //collision détectée return true return(0); // aucune collision ne renvoie false }

Et voilà ! maintenant vous pouvez profiter beaucoup plus du jeu ! Je vais maintenant vous montrer comment programmer les deux derniers niveaux du jeu ! votre presque fait avec cette instructable, et je suis sûr que vous êtes prêt à l'essayer !

Étape 7: Les deux derniers niveaux

Arrivaient à la fin de l'instructable, ces deux derniers niveaux sont tout ce dont vous avez besoin pour terminer ce jeu. Ensuite, vous pouvez l'essayer par vous-même! voici le code:

octet obstacle[LEVELS][SCENES][COLUMNS][ROWS] = { //deuxième et troisième niveau, 8 scènes, 8 colonnes, 8 lignes

{{{1, 0, 0, 0, 0, 0, 0, 1}, //deuxième niveau, première scène {0, 1, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, { 0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 1, 0}, {1, 0, 0, 0, 0, 0, 0, 1}}, {{1, 1, 0, 0, 0, 0, 0, 1}, //deuxième niveau, deuxième scène {0, 0, 1, 0, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 0, 0, 0 }, {0, 1, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 0, 0, 1, 0, 0}, {1, 0, 0, 0, 0, 0, 1, 1}}, {{0, 1, 0, 0, 0, 0, 0, 0}, //deuxième niveau, troisième scène {0, 0, 1, 1, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 0, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 0}, {0, 1, 0, 0, 0, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 1, 0}}, {{0, 0, 1, 0, 0, 0, 0, 0}, // deuxième niveau quatrième scène {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 1}, {0, 1, 1, 1, 1, 0, 1, 0}, {0, 1, 0, 1, 1, 1, 1, 0}, {1, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0}}, {{0, 0, 0, 1, 0, 0, 0, 0}, //deuxième niveau, fif ème scène {0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 1, 1, 0, 0, 1}, {1, 0, 0, 1, 1, 0, 1, 0}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 0}, // deuxième niveau, sixième scène {0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 1, 0, 0, 1, 0, 0}, {1, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 1, 1}, {0, 0, 1, 0, 0, 1, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 1, 0, 0}, //deuxième niveau, septième scène {0, 0, 0, 0, 0, 1, 0, 0}, {1, 1, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 1, 1}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0, 1, 0}, //second niveau huitième scène {1, 1, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 1, 1}, {0, 1, 0, 0, 0, 0, 0, 0}}}, {{{0, 1, 0, 0, 0, 0, 0, 1}, // troisième niveau, première scène {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 0, 0} }, {{0, 0, 0, 0, 1, 0, 0, 1}, //troisième niveau, deuxième scène {1, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, // troisième niveau, troisième scène {0, 0, 0, 1, 0, 0, 1, 0}, { 0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 1}, // troisième niveau, quatrième scène {1, 0, 0, 1, 0, 0, 1, 0 }, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, // troisième niveau, cinquième scène {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 1}, // troisième niveau, sixième scène {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, // troisième niveau, septième scène {0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 0}, //troisième niveau, huitième scène { 1, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}} };

Et c'est tout! vous êtes prêt à tenter de terminer le jeu le plus difficile du monde. Le code Arduino complet est également joint ci-dessous.

Conseillé: