Led Duel

by zizou,
published on

Le but du jeu est d’appuyer sur son bouton une fois toutes les leds éteints! 

Code:

 // Boutons Joueurs
 int buttonApin = 8;
 int buttonBpin = 9;
  
 int led = 2; // initialisation de la première LED à allumer
  
 int nbLoop = 0; // N° de la loop actuelle
 int stopAtLoop = 0;  // N° de la loop de fin
 int stopGame = 0;  // Fin du jeu
  
 void setup() {
   // Initialisation des LED
   pinMode(2, OUTPUT);
   pinMode(3, OUTPUT);
   pinMode(4, OUTPUT);
   pinMode(5, OUTPUT);
   pinMode(6, OUTPUT);
  
   // Initialisation des boutons
   pinMode(buttonApin, INPUT_PULLUP);  
   pinMode(buttonBpin, INPUT_PULLUP);  
  
   // Randomiser le numéro de la loop de fin
   randomSeed(analogRead(0));
   stopAtLoop = random(20, 50);
  
   // Initialiser l'output sur le moniteur série
   Serial.begin(9600);
  
 }
  
 void loop() {
     // Jeu terminé, appuyer sur reset pour redémarrer!
     if( stopGame == 1)
         return;
  
     // Dernière loop atteinte
     if(nbLoop == stopAtLoop) {
  
       // Eteindre la LED précédente
       if(led == 2)
         digitalWrite(6, LOW);
       else
         digitalWrite(led - 1, LOW);
  
       // Attendre le vainqueur
       if(digitalRead(buttonApin) == LOW) {
         Serial.println("Joueur 1 a gagné !");
         stopGame = 1;
         return;
       }
       
       if(digitalRead(buttonBpin) == LOW) {
         Serial.println("Joueur 2 a gagné !");
         stopGame = 1;
         return;
       }
       
     } else { // Dérouler les leds
  
       // Eteindre la LED précédente
       if(led == 2)
         digitalWrite(6, LOW);
       else
         digitalWrite(led - 1, LOW);
  
       // Allumer la led
       digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  
       // préparer prochaine led
       led++;
       
       if(led == 7)
         led = 2;
  
       // Incrémenter compteur de loop
       nbLoop++;
  
       // delay 100 ms
       for(int j=0; j< 10; j++) {
  
         // Arrêter le jeu si qq appuie sur un bouton
         if(digitalRead(buttonApin) == LOW) {
           Serial.println("Joueur 1 a perdu");
           stopGame = 1;
           return;
         } else if(digitalRead(buttonBpin) == LOW) {
           Serial.println("Joueur 2 a perdu");
           stopGame = 1;
           return;
         }
         
         delay(10);  
       }
  
     }
 }
view raw LedDuel.ino hosted with ❤ by GitHub

Les montages ont été faits en utilisant le Starter Kit du Débutant d'Elegoo, acheté sur Amazon.

Lien: https://www.amazon.fr/gp/product/B01JD2Z5XW/