Baraja.java 2.35 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
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]);
            }
        }

    }

}