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();
}