Primero, es conveniente colocar en la clase Carta unos getters para obtener la carta y el palo. La razón es sencilla, como en el arreglo se guardan las cartas con el formato carta + palo si comparamos las cartas así nomás, nunca habrá coincidencias, porque solo va a existir una carta del palo.
Lo del full ya hazlo tú
Código (=java) [Seleccionar]
/* Getters en clase Carta para obtener el palo y la carta */
public String getCarta(){
return this.carta;
}
public String getPalo() {
return this.palo;
}
Código (=java) [Seleccionar]
public class CardsPack {
// Abre clase PaqueteDeCartas
private Card mazo[];
private int cartaActual;
private final int NUMERODECARTAS = 52;
private Random numerosAleatorios;
public CardsPack()
{ // Abre constructor PaqueteDeCartas
String caras[] = { "AS", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE",
"OCHO", "NUEVE", "DIEZ", "JOTO", "QUINA", "REY"};
String palos[] = { "CORAZONES", "DIAMANTES", "TREBOLES", "ESPADAS"};
mazo = new Card[ NUMERODECARTAS ];
cartaActual = 0;
numerosAleatorios = new Random();
for ( int cuenta = 0; cuenta < mazo.length; cuenta++ )
mazo[ cuenta ] = new Card( caras[cuenta % 13], palos[cuenta/13]);
} // Cierra constructor PaqueteDeCartas
/* BARAJA LAS CARTAS */
public void barajar()
{
cartaActual = 0;
for ( int primera = 0; primera < mazo.length; primera++ )
{
int segunda = numerosAleatorios.nextInt(NUMERODECARTAS);
Card temp = mazo[primera];
mazo[primera] = mazo[segunda];
mazo[segunda] = temp;
}
}
/* METODO DE AYUDA - REPARTE UNA CARTAC */
private Card repartirCarta()
{
if (cartaActual < mazo.length )
return mazo[cartaActual++];
else
return null;
}
/* REPARTE UNA MANO DE 5 CARTAS */
public Card[] repartirMano() {
Card[] mano = new Card[5];
System.out.println("*** Tu mano es: ***\n\n");
for (byte carta = 0; carta < 5; carta++) {
mano[carta] = this.repartirCarta();
System.out.println(mano[carta].toString());
}
return mano;
}
/* RESULTADOS DE LA MANO */
public void analizarMano(Card[] mano) {
String[][] manoHecha = new String[5][2];
manoHecha[0][0] = "¿Hay par?";
manoHecha[1][0] = "¿Hay doble par?";
manoHecha[2][0] = "¿Hay tercia?";
manoHecha[3][0] = "¿Hay poker de ases?";
manoHecha[4][0] = "¿Hay color?";
System.out.println("\n\n*** Resultados de la mano: ***\n\n");
for (byte indice = 0; indice < manoHecha.length; indice++) {
byte col = 1;
switch(indice) {
case 0: manoHecha[indice][col] = String.valueOf(this.hayPar(mano)); break;
case 1: manoHecha[indice][col] = String.valueOf(this.hay2pares(mano)); break;
case 2: manoHecha[indice][col] = String.valueOf(this.hayTercia(mano)); break;
case 3: manoHecha[indice][col] = String.valueOf(this.hayPokerAses(mano)); break;
case 4: manoHecha[indice][col] = String.valueOf(this.hayColor(mano)); break;
}
}
for (byte fila = 0; fila < manoHecha.length; fila++) {
for (byte col = 0; col < manoHecha[fila].length; col++) {
if (col == 0) {
System.out.print(manoHecha[fila][col] + " - ");
}
else {
System.out.print(manoHecha[fila][col]);
System.out.println();
}
}
}
}
/* DETERMINA SI HAY UN PAR EN LA MANO */
private boolean hayPar(Card[] mano) {
boolean isPar = false;
for (byte fila=0; fila<mano.length; fila++) {
for(byte elemento=0; elemento<mano.length; elemento++) {
if (fila != elemento) {
if (mano[fila].getCara().equals(mano[elemento].getCara())) {
isPar = true;
break;
}
}
}
}
return isPar;
}
/* DETERMINA SI HAY 2 PARES */
private boolean hay2pares(Card[] mano) {
boolean is2par = false;
byte pares = 0;
for(byte fila = 0; fila < mano.length; fila++) {
for( byte elemento = 0; elemento < mano.length; elemento++) {
if (fila != elemento) {
if(mano[fila].getCara().equals(mano[elemento].getCara())) {
pares++;
}
}
}
}
if(pares == 2) {
is2par = true;
}
return is2par;
}
/* COMPRUEBA SI HAY TERCIA */
private boolean hayTercia(Card[] mano) {
boolean hayTrio = false;
byte tercia = 0;
for(byte fila = 0; fila < mano.length; fila++) {
for( byte elemento = 0; elemento < mano.length; elemento++) {
if (fila != elemento) {
if(mano[fila].getCara().equals(mano[elemento].getCara())) {
tercia++;
}
}
}
}
if(tercia == 3) {
hayTrio = true;
}
return hayTrio;
}
/* DETERMINA SI HAY 4 ASES */
private boolean hayPokerAses(Card[] mano) {
boolean haypoker = false;
byte asescount = 0;
final String as = "AS";
for(byte fila = 0; fila < mano.length; fila++) {
for( byte elemento = 0; elemento < mano.length; elemento++) {
if (fila != elemento) {
if(mano[elemento].getCara().equals(as)) {
asescount++;
}
}
}
}
if (asescount == 4) {
haypoker = true;
}
return haypoker;
}
/* DETERMINA SI HAY CINCO CARTAS DEL MISMO PALO */
private boolean hayColor(Card[] mano) {
boolean haycolor = false;
byte colorcount = 0;
for(byte fila = 0; fila < mano.length; fila++) {
for( byte elemento = 0; elemento < mano.length; elemento++) {
if (fila != elemento) {
if(mano[fila].getPalo().equals(mano[elemento].getPalo())) {
colorcount++;
}
}
}
}
if(colorcount == 5) {
haycolor = true;
}
return haycolor;
}
public static void main(String... args) {
CardsPack pack = new CardsPack();
pack.barajar();
Card[] mano = pack.repartirMano();
pack.analizarMano(mano);
}
}
Lo del full ya hazlo tú
