package ejercicio_poo_ddr_05; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; public class Baraja { private Carta cartas[]; private int posSiguienteCarta; public static final int NUM_CARTAS = 52; public Baraja() { this.cartas = new Carta[NUM_CARTAS]; crearBaraja(); barajar(); } private void crearBaraja() { String[] palos = Carta.PALOS; for (int i = 0; i < palos.length; i++) { for (int j = 0; j < Carta.LIMITE_CARTA_PALO; j++) { cartas[((i * (Carta.LIMITE_CARTA_PALO )) + j)] = new Carta(j + 1, palos[i]); } } } public void barajar() { int posAleatoria = 0; Carta c; for (int i = 0; i < cartas.length; i++) { posAleatoria = generaNumeroEnteroAleatorio(0, NUM_CARTAS - 1); c = cartas[i]; cartas[i] = cartas[posAleatoria]; cartas[posAleatoria] = c; } this.posSiguienteCarta = 0; } public static int generaNumeroEnteroAleatorio(int minimo, int maximo) { int num = (int) (Math.random() * (minimo - (maximo + 1)) + (maximo + 1)); return num; } public Carta siguienteCarta() { Carta c = null; if (posSiguienteCarta == NUM_CARTAS) { System.out.println("Ya no hay mas cartas, barajea de nuevo"); } else { c = cartas[posSiguienteCarta++]; } return c; } public Carta[] darCartas(int numCartas) { if (numCartas > NUM_CARTAS) { System.out.println("No se puede dar mas cartas de las que hay"); } else { Carta[] cartasDar = new Carta[numCartas]; for (int i = 0; i < cartasDar.length; i++) { cartasDar[i] = siguienteCarta(); } Arrays.sort(cartasDar, Comparator.comparing(Carta::getNumero).reversed()); return cartasDar; } return null; } public void cartasMonton(Carta carta[]) { Arrays.sort(carta, Comparator.comparing(Carta::getNumero).reversed()); for (int i = 0; i < posSiguienteCarta; i++) { System.out.println(carta[i]); } } public void validacionDoble(Carta carta[]){ boolean dobleE = false; for (int i = 0; i < 5; i++) { for (int j = i + 1; j < 5; j++) { if((carta[i].getNumero())==(carta[j].getNumero())){ dobleE = true; } } } if(dobleE){ System.out.println("\nEs Par"); } } public void parDoble(Carta carta[]){ int firstDoble = 0; boolean exist = false; for(int i=0;i<4;i++){ if(carta[i].getNumero()==(carta[i + 1].getNumero())){ if(firstDoble==0){ firstDoble = carta[i].getNumero(); }else if(carta[i].getNumero()!=(firstDoble)){ exist = true; } } } if(exist){ System.out.print("Es Doble Par "); } } public void cartaMasAlta(Carta carta[]){ System.out.print("\nCarta Alta "+carta[0]); } public void trio(Carta carta []){ boolean exist = false; for(int i=0;i<5-2;i++){ if(carta[i].getNumero()==(carta[i + 1].getNumero()) && carta[i].getNumero()==(carta[i+2].getNumero())){ exist = true; break; } } if(exist){ System.out.print("Es Trio"); } } public void full(Carta carta[]){ boolean exist = false; if(carta[0].getNumero()==(carta[1].getNumero()) && carta[0].getNumero()==(carta[2].getNumero()) && carta[3].getNumero()==(carta[4].getNumero())){ exist = true; }else if(carta[2].getNumero()==(carta[3].getNumero()) && carta[2].getNumero()==(carta[4].getNumero()) && carta[0].getNumero()==(carta[1].getNumero())){ exist = true; } if(exist){ System.out.print("\nEs Full "); } } public void escalera(Carta carta[]){ boolean exist = true; for(int i=0;i<4;i++){ if(carta[i].getNumero()==(carta[i + 1].getNumero()) || ( carta[i].getNumero() - carta[i+1].getNumero() )> 1){ exist = false; break; } } if(exist){ System.out.print("\nEs Escalera"); } } public void color(Carta carta[]){ int pA = 1; int val; if(carta[0].getPalo()==(carta[1].getPalo()) || carta[1].getPalo()==(carta[2].getPalo())){ val=0; }else{ val=1; } for(int i=val+1;i<4;i++){ if(carta[val].getPalo()==(carta[i].getPalo())) { pA++; } } if(pA == 4){ System.out.print("\nEs Color"); } } public void poker(Carta carta[]){ boolean exist = false; if(carta[0].getNumero()==(carta[1].getNumero()) && carta[0].getNumero()==(carta[2].getNumero()) && carta[0].getNumero()==(carta[3].getNumero())){ exist = true; }else if(carta[1].getNumero()==(carta[2].getNumero()) && carta[1].getNumero()==(carta[3].getNumero()) && carta[1].getNumero()==(carta[4].getNumero())){ exist = true; } if(exist){ System.out.print("\nEs Poker"); } } public void escaleraColor(Carta carta []){ boolean exist = true; for(int i=0;i 1 || !(carta[0].getPalo().equals(carta[i + 1].getPalo()))){ exist = false; break; } } if(exist){ System.out.print("\nEs Escalera Color"); } } }