Código del Proyecto


void setup()
{
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(speaker, OUTPUT);
  

  lcd.begin(16,2);
  delay(100);
  lcd.clear();
  lcd.print("Welcome To");
  lcd.setCursor(0,1);
  lcd.print("SIMON SAYS GAME");
  delay(3000);
  for (int i = 0; i < 14; i++)
    {
    lcd.scrollDisplayLeft();
    delay(300);
    }
  lcd.clear();
  lcd.print("Loading Game...");
  for (int i = 1; i<7; i++)
  {
    if (i<5)
    {
      lightLed(i);   
    }
      lightLed(0);   
  }
}
  
  void loop()
  {
  lcd.clear();
  lcd.print("To Start");
  lcd.setCursor(0,1);
  lcd.print("PRESS ANY BUTTON");
    while (started == false)
    {
      if (getButtonPressed() > 0)
      {
        playTone(5);
        started=true;
      }
    }
    
   
    for (int s=0; s < 50; s++)
    {
      lastLevelSeq[s] = 0;
    }
    
     delay(500);
     
  
     lcd.clear();
     lcd.print("Select Game Mode");
     
     while (gameMode == 0)
    {
     lcd.setCursor(0,1);
     lcd.print("1=P 2=R 4=TGLSND");
     
      switch (getButtonPressed())
      {
      case 1:
        if (soundEnabled)
        {
          playTone(5);
        }
        gameMode = 1;
        lcd.clear();
        lcd.print("Progressive");
        lcd.setCursor(0,1);
        lcd.print("Mode Selected");
        break;
       
      case 2:
        if (soundEnabled)
        {
          playTone(5);
        }
        
        gameMode = 2;
        lcd.clear();
        lcd.print("Random");
        lcd.setCursor(0,1);
        lcd.print("Mode Selected");
        break;
      
      case 4:
        soundEnabled = (!soundEnabled);
        lcd.setCursor(0,1);
        
        if (soundEnabled)
        {
          lcd.print("Sound Mode: ON  "); 
          playTone(5);          
        }
        else
        {
         lcd.print("Sound Mode: OFF "); 
        }
        delay(1000);
        break;  
      }
    }    
    
    delay(1000);
    
     //Set start level
     level =1;
     
    while (gameover == false)
    {
      if (doLevel(level)==true)
        {
          
          lcd.clear();
          lcd.print("LEVEL: "); lcd.print(level);
          lcd.setCursor(0,1);
          lcd.print("Completed......"); 
          
          if (soundEnabled)
          {
            
            for (int i =0; i < 3; i++)
            {
              playTone(5);
              delay(50);
            }
          }
          else
          {
            delay(125);
          }
          delay(1000);    
          level++;        
        } 
       else
      {
       
       gameover = true;
      }  
    }
    
    if (gameover == true)
    {
      lcd.clear();
      lcd.print("WRONG! GAME OVER");
      lcd.setCursor(0,1);
      lcd.print("SCORE: "); lcd.print(level-1);
      
      if (soundEnabled)
      {
        for (int i = 0; i < 5; i++)
        {
          playTone(6);
          delay(50);
        }
      }
      else
      {
        delay(125);
      }
    }
        
      
      lcd.clear();
      lcd.print("Sequence");
      lcd.setCursor(0,1);
      lcd.print("should have been");
      delay(500);
      for(int s=0; s < level; s++)
      {
        playStep(lastLevelSeq[s]);
        
        
        
        
      }
      
      lcd.clear();
      lcd.print("Your Score: "); lcd.print(level-1);
      lcd.setCursor(0,1);
      lcd.print("PRESS ANY BUTTON");
      
      
      while (gameover == true)
      {
       if (getButtonPressed() > 0)
        {
        level = 0;
        
        if (soundEnabled)
        {
          playTone(5);
        }
        gameover = false;
        started = false;
        gameMode = 0;
        }        
      }     
    }
  
   
  
  */  
  int getButtonPressed()
  {
    int userValue = 0;      
    userValue = analogRead(userInput);
    
    int buttonPressed = 0;
      
    if (userValue > 850)
    {
      buttonPressed = 0;      
    }
    if (userValue < 850)
    { 
      buttonPressed = 4;      
    }
    if (userValue < 800)
    {
      buttonPressed = 3;      
    }
    if (userValue < 700)
    {
      buttonPressed = 2;      
    }
    if (userValue < 600)
    {
      buttonPressed = 1;      
    }
    return buttonPressed;  
  }
  
  /*
  
  */
  void playStep(int number)
  {
    lightLed(number);
    if (soundEnabled)
    {
      playTone(number);
    }
    else
    {
      delay(100);
    }
    delay(250);
    lightLed(0);
  }
  
  
  /*
  
  
  */
  void lightLed(int led)
  {
    switch (led)
    {
    case 0:
      digitalWrite(led1,LOW);         
      digitalWrite(led2,LOW);
      digitalWrite(led3,LOW);
      digitalWrite(led4,LOW);
      delay(50);                     
      break;
    case 1:
      digitalWrite(led1,HIGH);        
      break;
    case 2:
      digitalWrite(led2,HIGH);       
      break;
    case 3:
      digitalWrite(led3,HIGH);       
      break;
    case 4:
      digitalWrite(led4,HIGH);        
      break;
    }
  }
 
  
  
  */
  void playTone(int tone)
  {
      int tones[6] = { 1000, 1250, 1500, 1750, 500, 3000}; 
      for (long i = 0; i < 125; i++)
      {
        
        digitalWrite(speaker, HIGH);
        delayMicroseconds(tones[tone-1]);
        digitalWrite(speaker, LOW);
        delayMicroseconds(tones[tone-1]);
      }
  }



*/
boolean doLevel(int level)
{
  int steps[level];               
  int userStep = 0;                
  int userLength =0;              
  boolean levelPass = false;      
  boolean inProgress = true;       
    
 
  lcd.clear();
  lcd.print("Arduino Turn");
  lcd.setCursor(0,1);
  lcd.print("Pay Attention");
  delay(1000);                    
  
  
  randomSeed(analogRead(0) + analogRead(1) + analogRead(2)+ analogRead(3)+analogRead(4)+analogRead(5));
  
  
  
  if (gameMode == 1)
  {
    
     
     for (int s=0; s < level; s++)
     {
       if (level > 1)
       {
         
         steps[s] = lastLevelSeq[s];
       }
       
       steps[level-1] = (int)random(1,5);
     }
  }
  if (gameMode == 2)
  {
     //Random
    for (int s=0; s < level; s++)
    {
      steps[s] = (int)random(1,5);
    }
  }
  
     
     for (int s=0; s < level; s++)
     {
       lastLevelSeq[s] = steps[s];
     }
  
  //Play the steps
  for (int s=0; s < level; s++)
  {
    playStep(steps[s]);
    
           

  }
  
  
  lcd.clear();
  lcd.print("LEVEL: "); lcd.print(level);
  lcd.setCursor(0,1);
  lcd.print("Your Turn.....");
  
  while (inProgress)
  {
    
   userStep = getButtonPressed();
   if (userStep >0)
   {
     userLength++;
     playStep(userStep);
     
     //lightLed(userStep);
     //playTone(userStep);
     //lightLed(0);
   
     
     if (steps[userLength-1] == userStep)
     {
       
       if (userLength ==level)
       {
        
         inProgress = false;
         levelPass = true;
       }
     }
     else
     {
       
       inProgress = false;
       levelPass = false;
     }
    }
  }
  return levelPass;
}
©

COPYRITH  2025 Primero de bachillerato Técnico Tic´s Informática

Creado con Webnode Cookies
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar