Título: Ayuda con mi proyecto Publicado por: Franandujar en 17 Diciembre 2017, 13:55 pm Hola, soy nuevo en el mundo de la programación y novato en java, estoy haciendo un proyecto pequeño y llevo estancado en un punto dos días.
Mi aplicación es de dos jugadores y tiene tres niveles, y quiero que mientras se pulse el botón de pasar turno menos o igual de 5 veces se ejecute la interfaz del jugador 2, pero si el boton ha sido pulsado mas de 5 veces que ejecute la interfaz de el nivel 2. No se cómo hacerlo. Mi idea fue: public class NivelUno extends JFrame implements ActionListener{ private JButton boton1; int a = 0; int b = 0; int c = 0; public NivelUno(){ boton1 = new JButton("PASAR TURNO"); } int a = 0; int b = 0; int c = 0; public void actionPerformed(ActionEvent e){ if(e.getSource() == boton1){ a++; c = a + b; b = c; if(b <= 5){ NivelUno2 niveluno2 = new NivelUno2(); niveluno2.setBounds(0,0,300,650); niveluno2.setVisible(true); niveluno2.setResizable(false); niveluno2.setLocationRelativeTo(null); this.setVisible(false); } if(b > 5){ NivelDos niveldos1 = new NivelDos(); niveldos1.setBounds(0,0,300,650); niveldos1.setVisible(true); niveldos1.setResizable(false); niveldos1.setLocationRelativeTo(null); this.setVisible(false); } } } public static void main(String args[]){ NivelUno niveluno1 = new NivelUno(); niveluno1.setBounds(0,0,300,650); niveluno1.setVisible(true); niveluno1.setResizable(false); niveluno1.setLocationRelativeTo(null); } } El problema es que creo que cuando pasa a la interfaz del jugador 2 los valores re reinician a 0 y siempre es el mismo valor, he probado todas las combinaciones posibles y no puedo seguir adelante, agradecería mucho que me ayudarais!!! Título: Re: Ayuda con mi proyecto Publicado por: Desiresportal en 26 Diciembre 2017, 14:01 pm No soy ningun experto tampoco. De hecho, aun estoy aprendiendo como programar en Java y ya estoy yo tambien preguntando por el foro algunas cosillas.
Por lo que veo en tu ejemplo, solo defines la clase "NivelUno". Pero despues haces uso de la clase "NivelUno", "NivelUno2" y "NivelDos1". Entiendo que por usar un ejemplo y no tu codigo final se te haya pasado por alto. Despues me pregunto: ¿Cuando se llama a "actionPerformed()"? Si se llama cada vez que pulsas el boton lo que ocurre es que vuelves a iniciar una nueva clase "NivelUno" con los valores y el contador de pulsaciones a 0. Mi sugerencia es que hagas que el constructor de "NivelUno" acepte un entero como argumento y lo apliques al contador. Al iniciar en "main()" lo haces con 0. Al pulsar sobre el boton, sumale 1 al contador y haz la nueva pantalla (o clase) pasando el contador. Prueba algo así: Código: public class NivelUno { Nota tambien que al haber sobrecargado el constructor de la clase "NivelUno" puedes sustituir la linea "NivelUno nivelUno1 = new NivelUno(0);" de "main()" por esta otra "NivelUno nivelUno1 = new NivelUno();". Otra cosa: No entiendo porque haces las operaciones con "a", "b" y "c". Supongo que algo tendrán que ver con tu proyecto, por eso lo dejo como estaba, pero tal vez quieras poner un constructor extra como el siguiente a la clase para mantener los valores al cambiar de pantalla (o clase). Código: public NivelUno(int rA, int rB, int rC) { Y solo tendrías que cambiar "NivelUno nivelUno2 = new NivelUno(b);" por "NivelUno nivelUno2 = new NivelUno(a, b, c);". Espero que te sirva. Suerte. |