#define PALOS 4
#define NUMCARTAS 10
#include <LiquidCrystal_I2C.h>
byte baraja [PALOS*NUMCARTAS];
char *strpalos[]={"Treboles","Diamantes","Corazones","Picas"};
LiquidCrystal_I2C lcd(0x27,16,2);
void iniciaBaraja(byte bar[PALOS*NUMCARTAS]){
for (byte i=0;i< PALOS*NUMCARTAS ; i++)
bar[i]=i+1;
}
/*void iniciaBaraja(){
for (byte i=0;i< PALOS*NUMCARTAS ; i++)
baraja[i]=i+1;
}*/
void mezclar(byte bar[PALOS*NUMCARTAS]){
for (byte i=0;i< PALOS*NUMCARTAS ; i++){
byte temp=bar[i];
byte indice=random(0,PALOS*NUMCARTAS);
bar[i]=bar[indice];
bar[indice]=temp;
}
}
void ImprimeBaraja(byte bar[PALOS*NUMCARTAS]){
// Mostrar toda la baraja esto se quitaria del programa
for (byte i=0;i< PALOS*NUMCARTAS ; i++){
Serial.print(bar[i]);Serial.print(",");}
/*delay(3000);
Serial.println();
for (byte i=0;i< PALOS*NUMCARTAS ; i++){
byte xx=bar[i];
byte tpal=(xx-1) /NUMCARTAS; // convierte valor de 1 a 48 en palo de la baraja (0=oros, 1=copas, 2=espadas, 3=bastos)-> división entera
byte num=xx % NUMCARTAS; // Obtiene el resto de la división y así obtenemos el número de carta
if (num==0) num=NUMCARTAS;// Si el resto es cero es en realidad el valor de NUMCARTAS
Serial.print(num);Serial.print(" de "); // ejemplo 6 de OROS (6,0)
Serial.print(strpalos[tpal]);Serial.print("("); Serial.print(xx);Serial.print(",");Serial.print(tpal); Serial.print("),");
Serial.println();
//delay(2000);*/
}
void setup()
{
randomSeed(analogRead(A0));
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
// Escribimos el número de segundos trascurridos
lcd.print(F("Barajando..."));
iniciaBaraja(baraja);
mezclar(baraja);
ImprimeBaraja(baraja);
delay(3000);
lcd.print(F("Listo!!!"));
}
void loop()
{
}