Java - duda con este codigo

 
Vista:

duda con este codigo

Publicado por evelyn (1 intervención) el 19/09/2011 08:17:11
Buenos dias chicos, 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
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?
gracias


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.
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

duda con este codigo

Publicado por Renzo (232 intervenciones) el 07/10/2011 01:30:55
te explico conun ejemplo

11 entre 5 te da

1 de residuo
2 de cociente

por esto:

11%5 = 1 (residuo de la división)
11/5 = 2 (cociente de la división)



Lo del -1 se usa para hacer referencia a ningun carta ya que las cartas van del 1 al 13


Saludos,
te invito a visitar mi página http://www.imagineanddo.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar