• Sábado 21 de Septiembre de 2024, 21:42

Autor Tema:  Juego Ahorcado  (Leído 3432 veces)

Snyflex

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Juego Ahorcado
« en: Sábado 10 de Octubre de 2009, 19:42 »
0
Hola a todos!!!
Soy un poco nuevo en el mundo de Java, y por tanto necesito ayuda con los eventos.

Mi Objetivo es Hacer un juego del ahorcado, en el cual cuando elija una letra del JComboBox y Pulse el Boton Aceptar, si la letra del String que mande por el jComboBox es igual a una de las letras te la palabra que debo terminar, se colocara arriba en el Label Palabra, si no coincide con ninguna letra de la palabra, la imagen que esta cargada, se cambiara por otra en la que ya aparece la cabeza de el ahorcado (como en el juego). Cuando llegue a 6 intentos fallidos, ya se habran cargado todas las imagenes (en total 6) y se abrira un mensaje de dialogo que me dira que eh perdido.

En el panel Mensajes me mostrara mi estado, es decir como voy en el juego, si acierto me dice juegue otra letra, si no acierto me dice intente con otra letra, y esa misma letra se visualizara en el panel Intentos, cuando Gane el juego, en Mensaje me dira has Ganado y en un cuadro de dialogo tambien
Un menu para reiniciar el Juego o para salir.

Adjunto el codigo que eh hecho para que vean donde estoy varado... y es mas en los eventos
Código: Java
  1. import javax.swing.*;
  2. import javax.swing.JLabel.*;
  3. import java.awt.event.*;
  4. import java.awt.*;
  5.  
  6. public class Sistema extends JFrame  {
  7.         private JLabel label1;
  8.         private JLabel label2;
  9.         private JLabel label3;
  10.         private JLabel label4;
  11.         private JLabel label5;
  12.         private JTextField intentos;
  13.         private JMenuBar menbar;
  14.         private ImageIcon imagen;
  15.         private JMenu menu1;
  16.         private JButton acepbut;
  17.         private JComboBox letras;
  18.        
  19.        
  20.     public Sistema() {
  21.    
  22.         //Prueba de Boton
  23.         JButton but = new JButton("Prueba");
  24.            
  25.         //Creacion del Label para "Letras"
  26.         label3 = new JLabel("Letras:");
  27.         label3.setBounds( new Rectangle(10, 155, 100, 75));
  28.        
  29.         //Creacion del Label para "Palabra"
  30.         label1 = new JLabel("Palabra:");
  31.         label1.setBounds( new Rectangle(10, -5, 100, 75));
  32.        
  33.         //Creacion del Label para "Intentos"
  34.         label2 = new JLabel("Intentos:");
  35.         label2.setBounds( new Rectangle(10, 93, 96, 37));
  36.        
  37.         //Creacion del Label para "Mensajes:"
  38.         label4 = new JLabel("Mensajes:");
  39.         label4.setBounds( new Rectangle(10, 260, 411, 45));
  40.        
  41.         //Creacion del Label para las imagenes
  42.         imagen = new ImageIcon("imagenes/1.gif");
  43.         label5 = new JLabel(imagen);
  44.         label5.setBounds( new Rectangle(215, 70, 219, 214));
  45.        
  46.         //Creacion del JTextField del label Intentos
  47.         JTextField intentos = new JTextField(10);
  48.         intentos.setEditable(false);
  49.        
  50.        
  51.         //Creacion de un JMenuBar
  52.         menbar = new JMenuBar();
  53.        
  54.         //Creacion de JMenu1
  55.         menu1 = new JMenu("Tools");
  56.         menbar.add(menu1); //Anado el menu al menu Bar
  57.        
  58.         // Creacion del Boton Aceptar
  59.         acepbut = new JButton("Aceptar");
  60.         acepbut.setBounds( new Rectangle(75, 210, 80, 40) );
  61.        
  62.         //Lo del Evento
  63.         Aceptar acepObject = new Aceptar();
  64.         acepbut.addActionListener( acepObject );
  65.        
  66.         /*Manejador del evento del Boton Aceptar
  67.         public void actionPerformed(ActionEvent event) {
  68.             acepbut.setText("Me has aceptado");
  69.         } */
  70.        
  71.         //Creacion del ComboBox para las letras que jugaran las palabras
  72.         letras = new JComboBox();
  73.         letras.setModel( new javax.swing.DefaultComboBoxModel( new String [] {"A", "B", "C", "D",
  74.         "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U",
  75.         "V", "X", "Y", "Z"}));
  76.         /*  letras.addItem("A"); //Empiezo a agregar las letras "Solo para Suponer"
  77.             letras.addItem("B");
  78.             letras.addItem("C");
  79.             letras.addItem("D");
  80.             letras.addItem("E");
  81.             letras.addItem("F");
  82.             letras.addItem("G");
  83.             letras.addItem("H");
  84.             letras.addItem("I");
  85.             letras.addItem("J");
  86.             letras.addItem("K");
  87.             letras.addItem("L");
  88.             letras.addItem("M");
  89.             letras.addItem("N");
  90.             letras.addItem("O");
  91.             letras.addItem("P");
  92.             letras.addItem("Q");
  93.             letras.addItem("R");
  94.             letras.addItem("S");
  95.             letras.addItem("T");
  96.             letras.addItem("U");
  97.             letras.addItem("V");
  98.             letras.addItem("W");
  99.             letras.addItem("X");
  100.             letras.addItem("Y");
  101.             letras.addItem("Z"); */
  102.         letras.setBounds( new Rectangle( 32, 220, 40, 20) );   
  103.            
  104.            
  105.         JFrame ventana = new JFrame("El Ahorcado");
  106.         ventana.getContentPane().setLayout( null );
  107.         ventana.getContentPane().add( BorderLayout.WEST, label1 );
  108.         ventana.getContentPane().add( BorderLayout.WEST, label2 );
  109.         ventana.getContentPane().add( BorderLayout.WEST, label3 );
  110.         ventana.getContentPane().add( BorderLayout.WEST, label4 );
  111.         ventana.getContentPane().add( BorderLayout.CENTER, label5 );
  112.         ventana.getContentPane().add( intentos );
  113.         ventana.getContentPane().add( menbar, BorderLayout.NORTH );
  114.         ventana.getContentPane().add( letras );
  115.         ventana.getContentPane().add( acepbut );
  116.         JFrame.setDefaultLookAndFeelDecorated(true);
  117.        
  118.        
  119.        
  120.         ventana.setSize(500, 400);
  121.         ventana.setVisible(true);
  122.         ventana.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  123.        
  124.         }
  125.        
  126.         class Aceptar implements ActionListener {
  127.  
  128.             public void actionPerformed(ActionEvent event) {
  129.                    
  130.                    
  131.             }
  132.         }   
  133.            
  134.     }
  135.  
  136.  

Y aqui se encuentra el Main

Código: Java
  1. import javax.swing.*;
  2. import javax.swing.JLabel.*;
  3. import java.awt.event.*;
  4. import java.awt.*;
  5. public class Ingreso {
  6.  
  7.     public static void main(String[] args) {
  8.         Sistema aplicacion = new Sistema();
  9.     }
  10. }
  11.  

Mi Mayor problema radica en que no se como hacer que las cosas cambien en mi frame cuando pulso un JButton.
Algunos amigos me dicen que primero trate de hacer la logica del Programa y luego pase a lo grafico, pero considero que como que no tiene  sentido eso que me dicen...
En fin, si me pudieran ayudar con esto lo agradeceria bastante.
No quiero que terminen el codigo, sino que me encaminen en buena forma ya que este es todo un nuevo mundo para mi.

Gracias!!

gophlb

  • Visitante
Re: Juego Ahorcado
« Respuesta #1 en: Sábado 10 de Octubre de 2009, 21:41 »
0
si tienes un jbutton, le tienes que pasar un ActionListener, y tienes dos opciones (entre otras muchas, seguro):

- que tu ActionListener sea el propio panel, implemente los metodos de ActionListener pertinentes y haga lo que deba hacer con los demas objetillos de tu panel
- que tu ActionListener sea una clase aparte, que maneja los objetos del panel (que es como lo tienes tu)

yo personalmente apostaria por la opcion 1, para evitarte andar pasando referencias y porque el contenedor deberia ocuparse de distribuir eventos de sus hijos, no una clase externa.

no se si me he explicado correctamente (es mas que posible que no), pero en resumen:
El panel que alberga los textfield, jbutton y demas, implementa la interfaz ActionListener y tiene un metodo actionPerformed(ActionEvent e) en el que hace lo que tenga que hacer (es decir, te sobra la clase Aceptar)

y ya esta :)

sobre como cambiar los valores de las cosas...eso ya es programacion basica y mirar los javadoc correspondientes o ejemplos por ahi.


como consejo ultimo, revisa las variables que tienes como globales y quita las que no sean necesarias. a veces es mejor pasarlos como parametros que tenerlos como variables globales. y a veces ocurre que tienes puestas 3000 variables globales que realmente no lo son (y no digo que sea tu caso, solo que revises por si acaso)

pd: si alguien opina que no es un buen consejo algo de lo dicho anteriormente...que lo comente :)