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