Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/10/2011, 06:34
-thor-
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 20 años, 7 meses
Puntos: 3
Duda con este codigo java

Hola, saben quiero continuar mi aprendisaje en java analizando codigos. En particular me podrian explicar unas lineas especificas de esta aplicacion

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