Un juego sencillo con Java Swing

13/Oct/2012 Java , , , , 4 Comentarios

Vamos a realizar un programa de escritorio usando Java Swing. Consiste en hacer un juego de adivinar la suma de dos números generados aleatoriamente.

Necesitamos los siguientes controles:

  1. 6 JTextField
  2. 6 JLabel
  3. 3 JButton

Un botón se encargará de generar y mostrar los dos números aleatorios, el siguiente botón activa una ventanita para introducir la suma de esos dos y comprobar si es correcta (acierto) o no (fallo) y mostrará el número de intentos realizados.

Y por último un botón para quitar la aplicación.

Como se trata de una aplicación gráfica es necesario importar las librerías javax.swing.* y java.awt.*.

  1. import javax.swing.JTextField;
  2. import javax.swing.JLabel;
  3. import javax.swing.JFrame;
  4. import javax.swing.JPanel;
  5. import javax.swing.JButton;
  6. import java.awt.event.*;
  7. import javax.swing.JOptionPane;
  8. import javax.swing.UIManager;
  9.  
  10. public class Aleatorio extends JFrame{
  11.  
  12. public Aleatorio(){
  13. //..
  14. //..
  15. }
  16. }

Los controles a usar para los que utilizaremos las clases JTextField y JButton:

  1. final private JTextField txtNum1,txtNum2,txtResultado,txtIntentos,txtAciertos,txtFallas;
  2. private JButton btnActiva,btnComprueba;
  3. private JButton btnSalir;

También necesitamos definir las variables que controlarán los valores aleatorios y su suma, así como los aciertos, fallos e intentos:

  1. //los dos números tomarán un valor aleatoriamete
  2. private long num1,num2,valor;
  3. //la suma
  4. long suma_prog;
  5. int intentos=0,aciertos=0,fallas=0;

Para generar los números aleatorios creamos una función:

  1. public long obtenerAleatorio1(){
  2. return (long)(Math.random()*1000);
  3. }

Puedes leer más información sobre como crear un número aleatorio con Java.

Ahora pasamos a codificar los botones Activar, Comprobar y Salir.

Activar
Este botón inicia el juego, para ello lo que hacemos es crear dos números aleatorios, con la clase creada anteriormente, y los ponemos dentro de los campos de texto sus valores.

  1. btnActiva= new JButton("Activar");
  2. btnActiva.addActionListener(new ActionListener() {
  3. public void actionPerformed(ActionEvent e) {
  4. Aleatorio aleatorio=new Aleatorio();
  5. aleatorio.setNum1(aleatorio.obtenerAleatorio1());
  6. aleatorio.setNum2(aleatorio.obtenerAleatorio2());
  7.  
  8. txtNum1.setText(String.valueOf(aleatorio.getNum1()));// no. 1
  9. txtNum2.setText(String.valueOf(aleatorio.getNum2()));// no.2
  10. txtResultado.setText("");
  11. }
  12. });

Comprobar
Es el botón que lanza el juego, lo que hace es crear un dialogo, mediante una clase JOptionPane. Cogemos el valor insertado por el usuario y comprobamos si coincide con la suma de los números aleatorios. Si es así incrementamos los aciertos, si no coincide, incrementamos los fallos.

  1. btnComprueba= new JButton("Comprobar");
  2. btnComprueba.addActionListener(new ActionListener() {
  3. public void actionPerformed(ActionEvent e) {
  4. Aleatorio alea=new Aleatorio();
  5. valor=Long.parseLong(JOptionPane.showInputDialog("Introduce valor"));
  6. alea.setValor(valor);
  7. txtResultado.setText(String.valueOf(alea.getValor()));//valor del usuario
  8. suma_prog=Long.parseLong(txtNum1.getText())+ Long.parseLong(txtNum2.getText());
  9.  
  10. if(suma_prog==alea.getValor()){
  11. aciertos+=1;
  12. intentos+=1;
  13. txtIntentos.setText(String.valueOf(intentos));
  14. txtAciertos.setText(String.valueOf(aciertos));
  15. }else{
  16. fallas+=1;
  17. intentos+=1;
  18. txtIntentos.setText(String.valueOf(intentos));
  19. txtFallas.setText(String.valueOf(fallas));
  20. }
  21. }
  22. });

Salir
En este caso, lo que hacemos es salir de la aplicación mediante el método System.exit.

  1. btnSalir= new JButton("Salir");
  2. btnSalir.addActionListener(new ActionListener() {
  3. public void actionPerformed(ActionEvent e) {
  4. System.exit(0);
  5. }
  6. });

Espero les sea de utilidad.

Vídeos sobre Java


Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

4 comentarios en “Un juego sencillo con Java Swing”

ARIEL

Dani

No me quiere correr el programa. Sabes lo que me falta?
import java.awt.BorderLayout;
import javax.swing.UIManager;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import java.awt.event.*;

public class OperacionesMedio extends JFrame {

private JPanel contentPane;

final private JTextField txtNum1,txtNum2,txtResultado,txtIntentos,txtAciertos,txtFallas;
private JButton btnActiva,btnComprueba;
private JButton btnSalir;
private long num1,num2,valor;

long suma_prog;
int intentos=0,aciertos=0,fallas=0;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
OperacionesMedio frame = new OperacionesMedio();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public OperacionesMedio() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JLabel lblNumero = new JLabel(“Numero 1”);
lblNumero.setBounds(10, 11, 71, 14);
contentPane.add(lblNumero);

txtNum1 = new JTextField();
txtNum1.setBounds(60, 8, 86, 20);
contentPane.add(txtNum1);
txtNum1.setColumns(10);

JLabel label = new JLabel(“+”);
label.setBounds(156, 11, 46, 14);
contentPane.add(label);

JLabel lblNumero_1 = new JLabel(“Numero2”);
lblNumero_1.setBounds(171, 11, 46, 14);
contentPane.add(lblNumero_1);

JLabel label_1 = new JLabel(“=”);
label_1.setBounds(273, 11, 71, 14);
contentPane.add(label_1);

JLabel lblResultado = new JLabel(“Resultado”);
lblResultado.setBounds(288, 11, 46, 14);
contentPane.add(lblResultado);

txtNum2= new JTextField();
txtNum2.setBounds(223, 8, 40, 20);
contentPane.add(txtNum2);
txtNum2.setColumns(10);

txtResultado = new JTextField();
txtResultado.setBounds(354, 8, 70, 20);
contentPane.add(txtResultado);
txtResultado.setColumns(10);

JLabel lblIntentos = new JLabel(“Intentos”);
lblIntentos.setBounds(10, 60, 46, 14);
contentPane.add(lblIntentos);

txtIntentos = new JTextField();
txtIntentos.setBounds(60, 57, 86, 20);
contentPane.add(txtIntentos);
txtIntentos.setColumns(10);

txtAciertos = new JTextField();
txtAciertos.setBounds(207, 57, 86, 20);
contentPane.add(txtAciertos);
txtAciertos.setColumns(10);

JLabel lblAciertos = new JLabel(“Aciertos”);
lblAciertos.setBounds(156, 60, 46, 14);
contentPane.add(lblAciertos);

JLabel lblFallas = new JLabel(“Fallas”);
lblFallas.setBounds(303, 60, 46, 14);
contentPane.add(lblFallas);

txtFallas = new JTextField();
txtFallas.setBounds(338, 57, 86, 20);
contentPane.add(txtFallas);
txtFallas.setColumns(10);

JButton btnActivar = new JButton(“Activar”);
btnActivar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
OperacionesMedio aleatorio=new OperacionesMedio();
aleatorio.setNum1(aleatorio.obtenerAleatorio1());
aleatorio.setNum2(aleatorio.obtenerAleatorio2());

txtNum1.setText(String.valueOf(aleatorio.getNum1()));// no. 1
txtNum2.setText(String.valueOf(aleatorio.getNum2()));// no.2
txtResultado.setText(“”);
}
});
btnActivar.setBounds(87, 105, 89, 23);
contentPane.add(btnActivar);

JButton btnComprobar = new JButton(“Comprobar”);
btnComprobar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
OperacionesMedio alea=new OperacionesMedio();
valor=Long.parseLong(JOptionPane.showInputDialog(“Introduce valor”));
alea.setValor(valor);
txtResultado.setText(String.valueOf(alea.getValor()));//valor del usuario
suma_prog=Long.parseLong(txtNum1.getText())+ Long.parseLong(txtNum2.getText());

if(suma_prog==alea.getValor()){
aciertos+=1;
intentos+=1;
txtIntentos.setText(String.valueOf(intentos));
txtAciertos.setText(String.valueOf(aciertos));
}else{
fallas+=1;
intentos+=1;
txtIntentos.setText(String.valueOf(intentos));
txtFallas.setText(String.valueOf(fallas));
}
}
});
btnComprobar.setBounds(186, 105, 89, 23);
contentPane.add(btnComprobar);

JButton btnSalir = new JButton(“Salir”);
btnSalir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
btnSalir.setBounds(300, 105, 89, 23);
contentPane.add(btnSalir);
}
public long obtenerAleatorio1(){
return (long)(Math.random()*1000);
}

public JButton getBtnActiva() {
return btnActiva;
}

public void setBtnActiva(JButton btnActiva) {
this.btnActiva = btnActiva;
}

}

ARIEL

Fabian

podrias hacer un comentario programandolo?

ARIEL

ARIEL

Que bueno que le sirvió 🙂

ARIEL

Nefi

Excelente 😀

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*


*