Foros del Web » Programación para mayores de 30 ;) » Java »

Duda con este codigo java

Estas en el tema de Duda con este codigo java en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/10/2011, 06:34
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 9 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 0cuenta paquete.lengthcuenta++ ) 
paquetecuenta ] = new Cartacarascuenta 13 ],
paloscuenta 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 0primera paquete.lengthprimera++ ) {
int segunda = ( int ) ( Math.random() * 52 );
Carta temp paqueteprimera ];
paqueteprimera ] = paquetesegunda ];
paquetesegunda ] = temp;
}

repartirBoton.setEnabledtrue );

************************************************** ***************************************
// 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 repartirBotonbarajarBoton;
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 Carta52 ];
cartaActual = -1;

// llenar paquete con objetos Carta
for ( int cuenta 0cuenta paquete.lengthcuenta++ ) 
paquetecuenta ] = new Cartacarascuenta 13 ],
paloscuenta 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 actionPerformedActionEvent eventoAccion )
{
Carta repartida repartirCarta();

if ( 
repartida != null ) {
pantallaCampo.setTextrepartida.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.addrepartirBoton );

barajarBoton = new JButton"Barajar cartas" );
barajarBoton.addActionListener(

new 
ActionListener() { // clase interna anónima

// barajar paquete
public void actionPerformedActionEvent 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.addbarajarBoton );

pantallaCampo = new JTextField20 );
pantallaCampo.setEditablefalse );
contenedor.addpantallaCampo );

estadoEtiqueta = new JLabel();
contenedor.addestadoEtiqueta );

setSize275120 ); // establecer tamaño de ventana
setVisibletrue ); // 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 0primera paquete.lengthprimera++ ) {
int segunda = ( int ) ( Math.random() * 52 );
Carta temp paqueteprimera ];
paqueteprimera ] = paquetesegunda ];
paquetesegunda ] = temp;
}

repartirBoton.setEnabledtrue );
}

// repartir una carta
private Carta repartirCarta()
{
if ( ++
cartaActual paquete.length )
return 
paquetecartaActual ];
else

repartirBoton.setEnabledfalse );
return 
null;
}
}

// ejecutar aplicación
public static void mainString args[] )
{
PaqueteDeCartas aplicacion = new PaqueteDeCartas();

aplicacion.setDefaultCloseOperationJFrame.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 CartaString caraCartaString paloCarta )
{
cara caraCarta;
palo paloCarta;
}

// devolver representación String de Carta
public String toString()

return 
cara " de " palo
}

// fin de la clase Carta 
  #2 (permalink)  
Antiguo 03/10/2011, 08:52
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Duda con este codigo java

Hola:

La operación % devuelve el resto de la división, es decir cuenta % 13 divide cuenta entre 13 y te devuelve el resto, un número entre 0 y 12.

Lo del -1 tiene pinta de ser un valor para indicar que no hay cartas repartidas o que no hay carta actual, sea lo que sea eso.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 03/10/2011, 08:52
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 3 meses
Puntos: 188
Respuesta: Duda con este codigo java

El math random se usa para indicar que las 52 cartas tienen la misma probabilidad de salir (random de 0 a 1 por 52 cartas existentes)

El que inicie cartaActual a -1 es por la comparación (<) con paquete.length (52) que hace en el método repartirCarta. Si lo quieres inicializar a 0 entonces la comparación debería ser:

if ( ++cartaActual <= paquete.length )
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: jar, aplicaciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:45.