package ejercicio_poo_ddr_05; 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(); } return cartasDar; } return null; } public void cartasMonton() { for (int i = 0; i < posSiguienteCarta; i++) { System.out.println(cartas[i]); } } public void mostrarBaraja() { if (cartasDisponible() == 0) { System.out.println("No hay cartas que mostrar"); } else { for (int i = posSiguienteCarta; i < cartas.length; i++) { System.out.println(cartas[i]); } } } }