lunes, 21 de noviembre de 2011

Barajado de Cartas en Java

Este programa es parte del libro Java Cómo Programar, Séptima edición, de Deitel. Algunos de los problemas propuestos más complicados del capítulo 7 tienen que ver con la modificación de éste código. Por eso lo incluyo aquí como una referencia. Lo que hace es solamente barajar todas las cartas, como puede verse ejecutando este programa.

El siguiente código debe guardarse con el nombre PruebaPaqueteDeCartas.java

public class PruebaPaqueteDeCartas
 {     // Abre clase PruebaDeCartas

 public static void main(String args[])
 {     // Abre main
  PaqueteDeCartas miPaqueteDeCartas = new PaqueteDeCartas();
  miPaqueteDeCartas.barajar();
  
  ///////////////////////////////////
  // IMPRIME
  //////////////////////////////////

 System.out.println("\n");
 for ( int i = 0; i < 13; i++ )
 { // Abre for
 System.out.printf("%-20s%-20s%-20s%-20s\n", 
 miPaqueteDeCartas.repartirCarta(), miPaqueteDeCartas.repartirCarta(),
 miPaqueteDeCartas.repartirCarta(), miPaqueteDeCartas.repartirCarta());
 }  // Cierra for

 System.out.println("\n");
 }     // Cierra main
 }     // Cierra clase PruebaDeCartas

El siguiente código debe guardarse con el nombre Carta.java

public class Carta
 
 { // Abre clase Carta

 private String cara;
 private String palo;
 public Carta( String caraCarta, String paloCarta)
 {   // Abre constructor
 cara = caraCarta;
 palo = paloCarta;

 }   // Cierra constructor

 public String toString()
 {   // Abre metodo toString
 return cara + " de " + palo;
 }   // Cierra metodo toString
 } // Cierra clase Carta


El siguiente código debe guardarse con el nombre PaqueteDeCartas.java

import java.util.Random;

 public class PaqueteDeCartas

 {  // Abre clase PaqueteDeCartas
 private Carta paquete[];
 private int cartaActual;
 private final int NUMERO_DE_CARTAS = 52;
 private Random numerosAleatorios;

 /////////////////////////////////////////////////////////////////
 // CONSTRUCTOR
 /////////////////////////////////////////////////////////////////

 public PaqueteDeCartas()
 {   // ABre constructor PaqueteDeCartas

 String caras[] = { "AS", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE",
 "OCHO", "NUEVE", "DIEZ", "JOTO", "QUINA", "REY"};
 String palos[] = { "CORAZONES", "DIAMANTES", "TREBOLES", "ESPADAS"};

 paquete = new Carta[ NUMERO_DE_CARTAS ];
 cartaActual = 0;
 numerosAleatorios = new Random();

 for ( int cuenta = 0; cuenta < paquete.length; cuenta++ )
 paquete[ cuenta ] = new Carta( caras[cuenta % 13], palos[cuenta/13]); 
 }   // Cierra constructor PaqueteDeCartas


 /////////////////////////////////////////////////////////////////
 // METODO BARAJAR
 /////////////////////////////////////////////////////////////////

 public void barajar()
 {   // Abre metodo barajar
 cartaActual = 0;
 
 for ( int primera = 0; primera < paquete.length; primera++ )
 { // Abre for
 int segunda = numerosAleatorios.nextInt(NUMERO_DE_CARTAS);
 
 Carta temp = paquete[primera];

 paquete[primera] = paquete[segunda];
 paquete[segunda] = temp;
 
 }  // Cierra for
 }   // Cierra metodo barajar 

 public Carta repartirCarta()
 {  // Abre metodo repartirCarta
 if (cartaActual < paquete.length )
 return paquete[cartaActual++];
 else return null;
 }  // Cierra metodo repartirCarta
 }  // Cierra clase PaqueteDeCartas

11 comentarios:

  1. Como puedo ponerles imagenes o sea las mismas de las cartas por favor ayudame. Gracias

    ResponderEliminar
    Respuestas
    1. ¡Hola, emi! No sé cómo hacerlo. No sé si programas en un lenguaje visual o algo así. Disculpa por no poder ayudarte. Saludos.

      Eliminar
  2. Uy estoy pegada en lo mismo. No sé como poner imágenes. Si alguno sabe ayudaa por favor. Tengo que hacer un solitario. /: Cualquier cosa programo en Java con Netbeans.

    ResponderEliminar
    Respuestas
    1. Kris, como dije, no sé cómo hacerlo. Si averiguas, envíanos por favor un link o algo. Muchos saludos.

      Eliminar
  3. como puedo determinar si la mano es par o tercia???

    ResponderEliminar
    Respuestas
    1. Revisa http://hitmontop-ejerciciosresueltos.blogspot.mx/2011/01/deitelc513.html

      Eliminar
  4. tienes que poner una array.png dentro de la carpeta sox con el numero 20 crack

    ResponderEliminar
  5. asi como estan de searadas las clases, como lo harias pero con herencia padre e hijo?

    ResponderEliminar
  6. ¿Hay alguna manera de que la carta NO regrese a la baraja y vayan saliendo cada vez menos?

    ResponderEliminar
  7. como hago para que al final me salga la suma de cada grupo de cartas

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...