const int derecha  = 5 ;
  const int abajo  = 2;
  const int arriba  = 4;
  const int izquierda = 3;
  const int aceptar = 13;
 
#include <LiquidCrystal.h>
     LiquidCrystal lcd(12, 11, 10, 9, 8, 7); 
    int indice[]= {10,1,};
    int sinboton=0;
    int cara;int cambi;
    int cursor;
    char bi= 255;
    int nega =-1;
    int ritmo = 0;
    int simbolo;
    int pasa= 0;
    int dado[]={random(1,7),0,random(1,7),0,random(1,7),0,8,0,
    random(1,7),0,random (1,7),0};
    
  int numero []={dado[0],dado[2],dado[4],dado[8],dado[10]};
  int orden []={0,0,0,0,0};int juego []={0,0,0,0,0,0};
  int paso;int mas=0;int mass=0;int valor=0;
 

void tirar(){cara=0;
   while (cara<random(12,40)) {
   lcd.setCursor(cursor+9,0);  
   cambi=random(1,7);cambio();
   cara++;}
   dado[cursor]=cambi;
  }
void jugada(){ 
 
  if (numero[mas]<=numero[mas+1]){
  paso=numero[mas];numero[mas]=numero[mas+1];//
  numero[mas+1]=paso;}
  if (numero[mas]==numero[mas+1]){
  if (juego[0]<=numero[mas]){juego[0]=numero[mas];}else{juego[1]=numero[mas];}}
    
  if (numero[mas]==numero[mas+1]&&numero[mas]==numero[mas+2]){ juego[2]=numero[mas+2];}
 
  if (numero[mas]==numero[mas+1]&&numero[mas]==numero[mas+2]&&
   numero[mas]==numero[mas+3]&&numero[mas]!=numero[mas+4]){ juego[3]=numero[mas+3];} ////
   
  if (numero[mas]==numero[mas+1]&&numero[mas]==numero[mas+2]&&
  numero[mas]==numero[mas+3]&&numero[mas]==numero[mas+4]){juego[4]=numero[mas+4];}
    if ( numero[0]!=numero[1]){juego[5]=numero[0];}else{if(numero[2]!=numero[3]){mas++; if (mas==5) {mas=0;}//
  juego[5]=numero[3];}else{juego[5]=numero[4];}}
  lcd.setCursor(8,1);
  if (0<juego[0]&&juego[1]+juego[2]+juego[3]+juego[4]==0) {lcd.print("Par de ");
   cambi=juego[0];cambio();lcd.print("   ");valor=juego[0];}
 if (0<juego[0]&&0<juego[1]&&juego[2]+juego[3]+juego[4]==0) {lcd.print("D ");
   cambi=juego[0];cambio();lcd.print(" y ");cambi=juego[1];cambio();valor=(juego[0]*10)+juego[1];}
   if (juego[1]==0&&0<juego[2]&&juego[3]==0&&juego[4]==0) {lcd.print("T ");
   cambi=juego[2];cambio();lcd.print(" a ");cambi=juego[5];cambio();valor=(juego[2]*10)+juego[5]+55;}
  if (0<juego[1]&&0<juego[2]&&juego[3]+juego[4]==0) {lcd.print("F ");
  cambi=juego[2];cambio();lcd.print(" y ");if(juego[0]==juego[2]){cambi=juego[1];cambio();;}else{cambi=juego[0];cambio();};valor=(juego[2]*100)+(juego[2]*10)+20;}
  if (0<juego[3]&&juego[4]==0) {lcd.print("Pok");cambi=juego[3];cambio();;
  lcd.print("a");cambi=juego[5];cambio();valor=(juego[3]*1000)+juego[5];}
  if (0<juego[4]) {lcd.print("  Re.Pk ");cambi=juego[4];cambio();valor=juego[4]*10000;}
   lcd.print(valor);
  }
 void mober(){ cursor=indice[0]-9;
 
  if(simbolo>1&&cursor+1==simbolo){dado[(cursor+2)*2]=dado[cursor*2];dado[cursor*2]=8;indice[0]++;}
  if(simbolo>1&&cursor+2==simbolo){dado[(cursor+2)*2]=dado[cursor*2];dado[cursor*2]=dado[(cursor+1)*2];dado[(cursor+1)*2]=8;indice[0]++;}
  if(simbolo>1&&cursor+3==simbolo){dado[(cursor+3)*2]=dado[cursor*2];dado[cursor*2]=dado[(cursor+1)*2];dado[(cursor+1)*2]=dado[(cursor+2)*2];dado[(cursor+2)*2]=8;indice[0]++;}
  if(simbolo>1&&cursor+4==simbolo){dado[(cursor+4)*2]=dado[cursor*2];dado[cursor*2]=dado[(cursor+1)*2];dado[(cursor+1)*2]=dado[(cursor+2)*2];dado[(cursor+2)*2]=dado[(cursor+3)*2];dado[(cursor+3)*2]=8;indice[0]++;}
  if(simbolo<4&&cursor+1==simbolo){dado[(cursor+2)*2]=dado[cursor*2];dado[cursor*2]=8;indice[0]--;} 
  if(simbolo<4&&cursor-2==simbolo){dado[(cursor-2)*2]=dado[cursor*2];dado[cursor*2]=dado[(cursor-1)*2];dado[(cursor-1)*2]=8;indice[0]--;}
  if(simbolo<4&&cursor-3==simbolo){dado[(cursor-3)*2]=dado[cursor*2];dado[cursor*2]=dado[(cursor-1)*2];dado[(cursor-1)*2]=dado[(cursor-2)*2];dado[(cursor-2)*2]=8;indice[0]--;}
  if(simbolo<4&&cursor-4==simbolo){dado[(cursor-4)*2]=dado[cursor*2];dado[cursor*2]=dado[(cursor-1)*2];dado[(cursor-1)*2]=dado[(cursor-2)*2];dado[(cursor-2)*2]=dado[(cursor-3)*2];dado[(cursor-3)*2]=8;indice[0]--;}
  
   }
void boton(){

  if(digitalRead( derecha )==LOW&&sinboton==0){sinboton++;indice[0]++;}
  if(indice[0]-9==simbolo){indice[0]++;}if(indice[0]==15){indice[0]--;}
  if(digitalRead(izquierda)==LOW&&sinboton==0){sinboton++;indice[0]--;}
  if(indice[0]-9==simbolo){indice[0]--;}if(indice[0]==8){indice[0]++;} 
  if(digitalRead (abajo)  == LOW&&sinboton==0){sinboton++;indice[1]++;}
  if(indice[1]==3){indice[1]=0;}
  if(digitalRead (arriba) == LOW&&sinboton==0){sinboton++;indice[1]--;}
  if(indice[1]==-1){indice[1]=2;}  
  if(digitalRead(aceptar) == LOW&&sinboton==0){sinboton++;if(indice[1]==0){lcd.print((bi));if(indice[1]==1){
    mober();}if(indice[1]==2){lcd.print((bi));}}
   }}
void sinbotones(){        
  if(digitalRead(arriba)==HIGH&&digitalRead(abajo)==HIGH&&digitalRead(derecha)==HIGH&&
  digitalRead(izquierda)==HIGH&&digitalRead(aceptar)==HIGH){sinboton=0;}  }  
void cambio() {  
  if (cambi==8){lcd.print(bi);simbolo=(cara/2);}
  if (cambi==1){lcd.print("N");}
  if (cambi==2){lcd.print("R");}
  if (cambi==3){lcd.print("J");}
  if (cambi==4){lcd.print("Q");}
  if (cambi==5){lcd.print("K");}
  if (cambi==6){lcd.print("A");}
  if (cambi==7){lcd.setCursor(indice[0],0);lcd.print("_");}}
void coloca() {cara=0;
  while (cara<25) {cursor=indice[0]-9;
  lcd.setCursor((cara/2)+9,0);
  cambi=dado[cara];cambio();
   cara=cara+2;}
   lcd.setCursor(0,0);lcd.print("1-0 2-0");
   lcd.setCursor(15,0);lcd.print((bi));
    lcd.setCursor(0,1);
   if (indice[1]==0){lcd.print("Tirar");cambi=7;cambio();}
   if (indice[1]==1){lcd.print("Mover");cambi=7;cambio();} 
   if (indice[1]==2){lcd.print("Pasa ");}}

void setup() {Serial.begin(115200);lcd.begin(16,2);pinMode(arriba,INPUT_PULLUP);
 pinMode(abajo,INPUT_PULLUP);pinMode(izquierda,INPUT_PULLUP);
 pinMode(derecha,INPUT_PULLUP);pinMode(aceptar,INPUT_PULLUP);}
void loop() { 
    cara=0; 
    coloca();
    sinbotones();
    boton();  // 
  jugada();
}