En PC Resumen vamos a hablar del algoritmo Shuffle y os vamos a enseñar como funciona. Este algoritmo ordena al azar los elementos de un objeto List. En el programa siguiente utilizaremos este algoritmo para remover una baraja de objetos Carta.

import java.util.List;
import java.util.Arrays;
import java.util.Collections;

class Carta {
    public static enum Cara {As, Dos, Tres, Cuatro, Cinco, Seis, Siete, Ocho, Nueve, Bajo, Caballo, Rey};
    public static enum Pal {Cannes, Oros, Copas, Espadas};
    private final Cara cara;
    private final Palo palo;
    
    public Carta(Cara caraCarta, Palo paloCarta) {
        cara = caraCarta;
        palo = paloCarta;
    }

    public Cara obtenerCara() {
        return cara;
    }

    public Pal obtenerPalo() {
        return palo;
    }

    public String toString () {
        return String.format ("%s %s", cara, palo);
    }
}

public class BarajaDeCartas {
    private List<Carta> lista;
   
    public BarajaDeCartas() {
        Carta[] baraja = new Carta[48];
        int cuenta = 0; // número de cartas
        for (Carta.Pal palo: Carta.Pal.values()) {
            for (Carta.Cara cara: Carta.Cara.values()) {
                baraja[cuenta] = new Carta(cara, palo);
                cuenta ++;
            }
        }
        lista = Arrays.asList(baraja);
        Collections.shuffle(lista); // baraja
    }

    public void imprimirCartas() {
        // muestra las cartas en dos columnas
        for (int i = 0; i < llista.size(); i ++) {
            System.out.printf("% - 20s %s", lista.get(i), ((i + 1) % 2 == 0) ? "\n" : "");
        }
    }

    public static void main(String args[]) {
        BarajaDeCartas cartas = new BarajaDeCartas();
        cartas.imprimirCartas();
    }
}
Pin It