martes, 24 de septiembre de 2019

Codificación con dígitos personalizados (corregido)

Estudiamos los errores e implementamos lo aprendido en clases pasadas para componer el sketch para el contador de puntos del pinball, e incluimos otros factores que afectarían la puntuación del jugador, como la rampa y el túnel.
 Se me dificultó mucho el implementar todos los componentes para el pinball en este sketch. Sin embargo, se pudo lograr, y ahora tengo una mejor comprensión de distintos elementos, como los operadores de comparación y los condicionales en programación, así como de las partes que forman el juego.
Todavía me pregunto sobre la mejor manera de unir todos los componentes en el pinball, pero planeando distintas variantes podría llegar a la mejor opción.

 El resultado fue éste:

#include <LiquidCrystal.h>
LiquidCrystal displei(12, 11, 5, 4, 3, 2);

int pinFotocelda=A0;
int pinTunel=A1;
int pinRampa=A2;
int vidas=3;
int puntos=0;
byte corazon_izq[8]={0b00000100,
0b00000001,
0b00000011,
0b00000011,
0b00000001,
0b00000000,
0b00000000
};
byte corazon_der[8]={0b00000000,
0b00000000,
0b00000010,
0b00010111,
0b00011111,
0b00011110,
0b00011100,
0b00001000
};
   void setup() {
   displei.begin(16, 2);
   pinMode(pinFotocelda,INPUT);
   pinMode(pinTunel, INPUT);
   pinMode(pinRampa, INPUT);
   displei.createChar(1,corazon_izq);
   displei.createChar(2,corazon_der);
}

void loop() {
   int datoTunel=analogRead (pinTunel);
   int datoRampa=analogRead(pinRampa);
   int dato=analogRead(pinFotocelda);
   delay(1000);
   if(dato<600)
   {
    vidas=vidas-1;
   }
   if(vidas==0)
   {
  displei.clear();
  displei.setCursor(0,0);
  displei.print("Como que perdiste D:");
  delay(5000);
  vidas=3;
}
/*void mensajePerdiste(){
  displei.clear();
  displei.setCursor(0,0);
  displei.print("Como que perdiste D:");
  delay(5000)
  ;vidas=3;
}*/
  displei.setCursor(0,0);
  printVidas();
  int pinTunel=analogRead(pinTunel);
  int pinRampa=analogRead(pinRampa);
   delay(500);
   if(datoTunel<600)
{
    puntos=puntos+30;
}
   if(datoRampa<600)
   {
     puntos=puntos+20;
   }
   if(puntos>=100)
   {
  displei.clear();
  displei.setCursor(0,0);
  displei.print("¡Muy bien!");
  delay(5000);
  puntos=0;
  }
  displei.setCursor(12,0);
  displei.print(puntos);

}
void printVidas(){
  if(vidas==3)
{
  displei.clear();
  displei.write(1);
  displei.write(2);

  displei.write(1);
  displei.write(2);
}
}

Resultado de imagen para programacion de un pinball

No hay comentarios:

Publicar un comentario