aqui para que sirve la linea cuenta%13
// llenar paquete con objetos Carta
Código PHP:
for ( int cuenta = 0; cuenta < paquete.length; cuenta++ )
paquete[ cuenta ] = new Carta( caras[ cuenta % 13 ],
palos[ cuenta / 13 ] );
y esta es mi ultima duda que espero no molestar a nadie. En este metodo, ¿por que se inicializa la varible cartaActual en menos 1 cartaActual = -1? ¿cual es su funcionalidad especificamente, si fuera inicializada en 0 cual seria el problema?
¿para que sirve esta linea de codigo:Math.random() * 52 ); ?
gracias
Código PHP:
private void barajar()
{
cartaActual = -1;
// para cada carta, elegir otra carta aleatoria e intercambiarlas
for ( int primera = 0; primera < paquete.length; primera++ ) {
int segunda = ( int ) ( Math.random() * 52 );
Carta temp = paquete[ primera ];
paquete[ primera ] = paquete[ segunda ];
paquete[ segunda ] = temp;
}
repartirBoton.setEnabled( true );
}
// Programa para barajar y repartir cartas.
Código PHP:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PaqueteDeCartas extends JFrame {
private Carta paquete[];
private int cartaActual;
private JButton repartirBoton, barajarBoton;
private JTextField pantallaCampo;
private JLabel estadoEtiqueta;
// configurar paquete de cartas y GUI
public PaqueteDeCartas()
{
super( "Programa para repartir cartas" );
String caras[] = { "As", "Dos", "Tres", "Cuatro", "Cinco", "Seis",
"Siete", "Ocho", "Nueve", "Diez", "Joto", "Qüina", "Rey" };
String palos[] = { "Corazones", "Diamantes", "Tréboles", "Espadas" };
paquete = new Carta[ 52 ];
cartaActual = -1;
// llenar paquete con objetos Carta
for ( int cuenta = 0; cuenta < paquete.length; cuenta++ )
paquete[ cuenta ] = new Carta( caras[ cuenta % 13 ],
palos[ cuenta / 13 ] );
// configurar GUI y manejo de eventos
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
repartirBoton = new JButton( "Repartir carta" );
repartirBoton.addActionListener(
new ActionListener() { // clase interna anónima
// repartir una carta
public void actionPerformed( ActionEvent eventoAccion )
{
Carta repartida = repartirCarta();
if ( repartida != null ) {
pantallaCampo.setText( repartida.toString() );
estadoEtiqueta.setText( "Carta #: " + cartaActual );
}
else {
pantallaCampo.setText( "NO HAY MAS CARTAS QUE REPARTIR" );
estadoEtiqueta.setText( "Barajee las cartas para continuar" );
}
}
} // fin de la clase interna anónima
); // fin de la llamada a addActionListener
contenedor.add( repartirBoton );
barajarBoton = new JButton( "Barajar cartas" );
barajarBoton.addActionListener(
new ActionListener() { // clase interna anónima
// barajar paquete
public void actionPerformed( ActionEvent eventoAccion )
{
pantallaCampo.setText( "BARAJANDO ..." );
barajar();
pantallaCampo.setText( "SE BARAJO EL PAQUETE" );
}
} // fin de la clase interna anónima
); // fin de la llamada a addActionListener
contenedor.add( barajarBoton );
pantallaCampo = new JTextField( 20 );
pantallaCampo.setEditable( false );
contenedor.add( pantallaCampo );
estadoEtiqueta = new JLabel();
contenedor.add( estadoEtiqueta );
setSize( 275, 120 ); // establecer tamaño de ventana
setVisible( true ); // mostrar ventana
}
// barajar paquete de cartas con algoritmo de una pasada
private void barajar()
{
cartaActual = -1;
// para cada carta, elegir otra carta aleatoria e intercambiarlas
for ( int primera = 0; primera < paquete.length; primera++ ) {
int segunda = ( int ) ( Math.random() * 52 );
Carta temp = paquete[ primera ];
paquete[ primera ] = paquete[ segunda ];
paquete[ segunda ] = temp;
}
repartirBoton.setEnabled( true );
}
// repartir una carta
private Carta repartirCarta()
{
if ( ++cartaActual < paquete.length )
return paquete[ cartaActual ];
else
{
repartirBoton.setEnabled( false );
return null;
}
}
// ejecutar aplicación
public static void main( String args[] )
{
PaqueteDeCartas aplicacion = new PaqueteDeCartas();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase PaqueteDeCartas
// clase para representar una carta
class Carta
{
private String cara;
private String palo;
// constructor para inicializar una carta
public Carta( String caraCarta, String paloCarta )
{
cara = caraCarta;
palo = paloCarta;
}
// devolver representación String de Carta
public String toString()
{
return cara + " de " + palo;
}
} // fin de la clase Carta