elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda con mi proyecto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con mi proyecto  (Leído 1,821 veces)
Franandujar

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con mi proyecto
« 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!!!


En línea

Desiresportal

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Ayuda con mi proyecto
« Respuesta #1 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 {

private JButton boton1;

int a=0, b=0,c=0;

public NivelUno(int contador) {
this.b = contador;
}

public NivelUno() {

}

public actionPerformed(ActionEvent event) {
a++;
c = a+b;
b = c;

if (b <= 5) {
NivelUno nivelUno2 = new NivelUno(b); // Aqui paso el contador en su estado actual a la proxima pantalla.
niveluno2.setBounds(0,0,300,650);
niveluno2.setVisible(true);
niveluno2.setResizable(false);
niveluno2.setLocationRelativeTo(null);
this.setVisible(false);
}
else if (b > 5) {
NivelDos nivelDos = new NivelDos();
nivelDos.setBounds(0,0,300,650);
nivelDos.setVisible(true);
nivelDos.setResizable(false);
nivelDos.setLocationRelativeTo(null);
this.setVisible(false);
}

}

}

public class NivelDos {

}

public static void main() {
NivelUno nivelUno1 = new NivelUno(0);
niveluno1.setBounds(0,0,300,650);
niveluno1.setVisible(true);
niveluno1.setResizable(false);
niveluno1.setLocationRelativeTo(null);
}

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) {
this.a = rA;
this.b = rB;
this.c = 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.


« Última modificación: 26 Diciembre 2017, 14:03 pm por Desiresportal » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA CON PROYECTO!!!!
Electrónica
carcepower 2 3,074 Último mensaje 10 Marzo 2006, 12:33 pm
por plomo17
Ayuda con un Proyecto !!!!!!!!! « 1 2 »
Programación Visual Basic
VirucKingX 10 4,311 Último mensaje 26 Abril 2006, 04:04 am
por VirucKingX
ayuda con proyecto
Programación Visual Basic
claudio145 4 1,924 Último mensaje 31 Agosto 2007, 01:19 am
por cark
Ayuda con un proyecto « 1 2 3 4 »
Programación Visual Basic
lord manson 38 12,569 Último mensaje 19 Julio 2008, 14:49 pm
por lord manson
Ayuda CON mi proyecto « 1 2 »
Programación Visual Basic
blood_brother 11 5,474 Último mensaje 23 Agosto 2009, 18:29 pm
por seba123neo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines