martes, 24 de septiembre de 2019

Dígitos personalizados

Retomamos un tema anterior y realizamos caracteres personalizados para el contador de vidas del Pinball, de modo que en lugar de aparecer palabras, aparecerán figuras simbolizando las vidas del jugador. Me costó el implementar correctamente lo programado con los caracteres personalizados, pero se pudo. Formar los dígitos personalizados fue algo más fácil.

Así quedó el sketch:

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int pinFotocelda=A0;
int vidas=3;
byte corazon_izq[8]={0b00000000,
0b00000001,
0b00000011,
0b00000011,
0b00000001,
0b00000000,
0b00000000
 };

byte corazon_der[8]={ 0b00000000,
0b00000000,
0b00000010,
0b00010111,
0b00011111,
0b00011110,
0b00011100,
0b00001000
 };

void setup() {
  pinMode(pinFotocelda,INPUT);
  lcd.begin(16, 2);
  lcd.createChar(1,corazon_izq);
  lcd.createChar(2,corazon_der);

}



void loop() {
  int dato=analogRead(pinFotocelda);
  delay(1000);
  if(dato<300)
  {
    vidas=vidas-1;
  }
  if(vidas==0)
  {
    lcd.clear();
    lcd.setCursor(1, 1); 
    lcd.print("¡JUEGO FINALIZADO!");
    vidas=3;
  }
   lcd.setCursor(0, 0);
   printVidas();
}


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

    lcd.write(1);
    lcd.write(2);

    lcd.write(1);
    lcd.write(2);
  }
  else if(vidas==2){
 
  }

}

uwuwuwuwuwuwuwuwuwuwuw (esto es un separador)


#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int pinFotocelda=A0;
int vidas=3;
byte corazon_izq[8]={0b00000000,
0b00000000,
0b00000001,
0b00000011,
0b00000011,
0b00000001,
0b00000000,
0b00000000,
0b0000000

 };

byte corazon_der[8]={ 0b00000000,
0b00000000,
0b00000010,
0b00010111,
0b00011111,
0b00011110,
0b00011100,
0b00001000,
0b0000000

 };

void setup() {
  pinMode(pinFotocelda,INPUT);
  lcd.begin(16, 2);
  lcd.createChar(1,corazon_izq);
  lcd.createChar(2,corazon_der);

}



void loop() {
  int dato=analogRead(pinFotocelda);
  delay(1000);
  if(dato<300)
  {
    vidas=vidas-1;
  }
  if(vidas==0)
  {
    lcd.clear();
    lcd.setCursor(1, 1); 
    lcd.print("¡JUEGO FINALIZADO!");
    vidas=3;
  }
   lcd.setCursor(0, 0);
   printVidas();
}


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

    lcd.write(1);
    lcd.write(2);

    lcd.write(1);
    lcd.write(2);
  }
  else if(vidas==2){
 
  }

}

Al final, supuse que para implementar o crear cualquier figura como un carácter personalizado, la clave estaría en tener una disposición clara tanto de la figura como del display donde se vaya a mostrar.
Resultado de imagen para vidas en videojuegos

No hay comentarios:

Publicar un comentario