sábado, 19 de septiembre de 2009

Un simple juego de dados en Java utilizando Random e ImageIcon

Hola, pues esta entrega no será sobre C#, como lo dice el titulo del post, haremos un juego de Dados en Java, utilizando como IDE a Netbeans, unas imágenes de un dado, y de Java usaremos Random e ImageIcon.

Creamos nuestro proyecto en Netbeans y hacemos una interfaz como la que se muestra en la imagén.
Los cuadros grandes que se ven en medio de la ventana (Dado 1 y Dado 2) son dos paneles con borde y dentro de cada uno de ellos debemos de colocar un label que será donde cargaremos laimagen del dado.

Lo siguiente será crear dos clases, una donde colocaremos los métodos del "juego" de dados y otra para tener el método que cargará a las imágenes del dado, que por que por separado? pues por que así como esta hecho se lo pidieron a mi hermana en la escuela y pues así tuvo que hacerse. A continuación el código fuente de la clase CDado:
import java.util.Random;
import javax.swing.JOptionPane;
/**
*
* @author José Alfonso Aguilar
*/
public class CDado
{
public int iValorTirada;
private String sNombre;

CDado(String sNombre)
{
this.sNombre = sNombre;
}

public int fCalculaValor()
{
Random rGenerador = new Random();
iValorTirada = rGenerador.nextInt(6) + 1;
System.out.println("El resultado de la tirada es: " + iValorTirada);
return iValorTirada;
}

public boolean fCalcularPartidaGanada(int iDado1,int iDado2)
{
boolean bGano=false;
int iResultado= iDado1 + iDado2;
if(iResultado==7)
{
JOptionPane.showMessageDialog(null, "Felicidades " + sNombre + "!!!!",
"Ganaste!!!!!", JOptionPane.INFORMATION_MESSAGE);
bGano=true;
}
return bGano;
}
}
Ahora el código para la clase que carga las figuras, todo estopuede hacerse en unsolo archivo pero repito, asi lo pidieron. Esta clase lo que hace es que dentro de un Switch case manda llamar la imagen correspondiente al número que "aleatoriamente" resulto de la tirada del dado, para esto es necesario tener en la unidad C de nuestro PC una carpeta llamada dados con las 6 imagenes correspondientes a cada lado del dado:

import javax.swing.ImageIcon;

/**
*
* @author José Alfonso Aguilar
*/
public class CImagenesDAdo
{
public ImageIcon icoImagen;

CImagenesDAdo()
{

}

public ImageIcon fCargarImagenDado(int iValorDado)
{
switch (iValorDado)
{
case 1:
icoImagen = new ImageIcon("C:/dados/dado1.jpg");
break;
case 2:
icoImagen = new ImageIcon("C:/dados/dado2.jpg");
break;
case 3:
icoImagen = new ImageIcon("C:/dados/dado3.jpg");
break;
case 4:
icoImagen = new ImageIcon("C:/dados/dado4.jpg");
break;
case 5:
icoImagen = new ImageIcon("C:/dados/dado5.jpg");
break;
case 6:
icoImagen = new ImageIcon("C:/dados/dado6.jpg");
break;
}
return icoImagen;
}
}

Ahora vamos a ver lo que contendrá el botón "jugar" de nuestra pantalla principal:

public int iJugados, iGanados, iPerdidos;-------Variables globales....

private void btnJugarActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:

CDado objDado= new CDado(sNombre); //instanciar la clase
CImagenesDAdo objImagenes = new CImagenesDAdo();//instanciar

iJugados= iJugados+1;
txtJugados.setText(""+ iJugados);

int iNumero1 = objDado.fCalculaValor(); /llamar a metodo Random
txtDado1.setText(""+iNumero1);
lblDado1.setIcon(objImagenes.fCargarImagenDado(iNumero1)); //cargar imagen
int iNumero2 = objDado.fCalculaValor();
txtDado2.setText(""+iNumero2);
lblDado2.setIcon(objImagenes.fCargarImagenDado(iNumero2));

if(objDado.fCalcularPartidaGanada(iNumero1, iNumero2))
{
iGanados= iGanados+1;
txtGanados.setText(""+iGanados);
}
else
{
iPerdidos= iPerdidos+1;
txtPerdidos.setText(""+iPerdidos);
}
}
Finalmente una imagen del programa en ejecución, espero a alguien le sirva, saludos.

3 comentarios:

  1. Hola!!Soy de Entre Fantasmas y Buffyverso. Te he estado buscando porque tuve que borrar el post ya que me dió problemas. Copié tu comentario y lo pegué aquí:

    http://entrefantasmasybuffyverso.blogspot.com/2009/10/entre-fantasmas-5x02-see-no-evil.html

    Ya tienes los subtítulos y el capítulo con los subtítulos incrustados.. que lo disfrutes!!Un beso!!

    Vaya que blog tan genial!!!

    Ana. Efybv

    ResponderEliminar
  2. el ultimo codigo va en una clase nueva o en la misma clase dnd buscamos las imagenes de los dados?

    ResponderEliminar

Gracias por tu comentario.