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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [24] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ... 60
231  Programación / Java / Re: Ayuda con este método. en: 7 Octubre 2011, 05:12 am
Pero hay cosas que no entiendo.

Código
  1. public void BuscarLetra(char pal)
  2. {
  3. String Sol1 = Solucion;
  4. Solucion = "";
  5. for(int x = 0; x < palabra.length(); x++)
  6. {
  7. if(palabra.charAt(x) != ' ')
  8. {
  9. if(pal == palabra.charAt(x))
  10. Solucion += pal;
  11. else
  12. Solucion += Sol1.charAt(x);
  13. }else
  14. Solucion += ' ';
  15. }
  16. }
  17.  

En ese ciclo el "else" externo nunca se va a ejecutar.
Supongamos que la palabra es "vaca", entonces el ciclo va a ir comparando cada letra de esa palabra con '_',
vaca.charAt(0) = v
vaca.charAt(1) = a
vaca.charAt(2) = c
vaca.charAt(3) = a
Cada una de esas letras es distinta de '_', así que siempre se va ejecutar lo que está adentro del if y nunca se va a ejecutar el else, entonces por qué hay un else?



Oh, ok, ya entendí que es para las frases que tienen espacio, no me fijé en la excepción a la regla :p.
Gracias!
232  Programación / Java / Re: Ayuda con este método. en: 6 Octubre 2011, 18:18 pm
Gracias, creo que el método BuscarLetra() me va a servir.

Pensé que lo podía hacer como ya dije antes
Citar
String str = "Animal";
int index = str.indexOf('m');
System.out.println("Reemplazo: " +str.replace(str.charAt(index),'b'));

Pero no me funcionó. En ese caso donde hay que sustituir un caracter de una palabra funciona bien, pero en el caso mío que todos los caracteres son iguales ( _ _ _ _ _ ) entonces lo sustituye todo.
233  Programación / Java / Re: Ayuda con este método. en: 6 Octubre 2011, 04:00 am
No me funciona bien :-\

Intenté con todas la vocales y no hizo nada, solo iba restando intentos y todas las palabras tienen vocales.
234  Programación / Java / Re: Ayuda con este método. en: 4 Octubre 2011, 06:46 am
Gracias por tu ayuda, pero ya he resuelto una parte.

Es que tenía un disparate porque todavía no entiendo bien los eventos.
Pero lo que tenía que hacer era pasar la sentencia que le da el valor seleccionado del JCombo Box a la variable letraElegida al método actionPerformed, yo lo tenía en el método itemStatedChanged y quedaba mal.
Y para que el método que compara la letraEscogida con la palabra se ejecute cada vez que le doy al botón, solo tengo que llamar ese método dentro del método actionPerformed.

Wow, había pasado 2 días luchando con eso. Aunque todavía me falta  :xD



Otro problema es para sustituir la letra que forma parte de la palabra en su correspondiente espacio. Necesito ayuda con eso. Estoy muy perdido con eso y creo que no es para nada como yo lo tengo

Tengo este método que crea tantas rayas como letras tenga la palabra:
Código
  1. public void presentarNumRayas(){
  2. switch(palabraElegida.length()){
  3. case 4:
  4. lbl_long4 = new JLabel(" _ _ _ _ "); //tiene 9  - 5
  5. panelPalabras.add(lbl_long4);
  6. break;
  7. case 5:
  8. lbl_long5 = new JLabel(" _ _ _ _ _ "); //tiene 11  - 6
  9. panelPalabras.add(lbl_long5);
  10. break;
  11. case 6:
  12. lbl_long6 = new JLabel(" _ _ _ _ _ _ "); //tiene 13  - 7
  13. panelPalabras.add(lbl_long6);
  14. break;
  15. case 7:
  16. lbl_long7 = new JLabel(" _ _ _ _ _ _ _ "); //tiene 15  - 8
  17. panelPalabras.add(lbl_long7);
  18. break;
  19. case 8:
  20. lbl_long8 = new JLabel(" _ _ _ _ _ _ _ _ "); //tiene 17  - 9
  21. panelPalabras.add(lbl_long8);
  22. break;
  23. }
  24. }

Y este para buscar la letra dentro de la palabra. Si la letra forma parte de la palabra, entonces se determina cual Label es el que se está mostrando y a ese label le setteo la letraElegida.
Pero eso es un disparate, hay muchos inconvenientes: el principal de todos es que muestra las letras en el orden que el usuario las adivina.
Código
  1. public void buscarLetra(){
  2. for(int i=0;i<palabraElegida.length();i++){
  3. if(palabraElegida.substring(i, i+1).equals(letraEscogida)){
  4. auxCorrecto += letraEscogida;
  5. switch(palabraElegida.length()){
  6. case 5:
  7. lbl_long5.setText(auxCorrecto+="");
  8. break;
  9. }
  10. }
  11.  
  12. }
  13. }


Necesito saber otra forma de hacerlo, tal vez sin necesidad de crear un Label para cada longitud. Que se cree solo un Label con la palabra y que sea oculta para el usuario, entonces que cuando se haga la comparación se muestre sola la letra que ha adivinado.



Necesito hacer esto:
Tengo un String, por ejemplo: ¨"Animal" y tengo que reemplazar en ese String el caracter que ocupa la posición 3 (el índice 3) que sería la "m" por una "b" por ejemplo para que quede así: "Anibal"
¿Cómo puedo hacer eso?

Sé que está el método string.indexOf() que me da el índice que en que está un caracter dentro de un String. Y sé que está el método string.replace() que replaza un caracter viejo por uno nuevo. Pero cómo decirlo.... es que no son como "compatibles" o sea no encuentro una forma de combinarlos para hacer lo que quiero.



Creo que se puede hacer así:
Código
  1. String str = "Animal";
  2. int index = str.indexOf('m');
  3. System.out.println("Reemplazo: " +str.replace(str.charAt(index),'b'));
  4.  
[/u]

No sé que pasa, pero casi siempre que posteo algo al rato se me ocurre la solución, el foro es mágico xD
235  Programación / Java / Ayuda con este método. en: 4 Octubre 2011, 04:28 am
Estoy haciendo el juego de ahorcado y tengo el siguiente método que sirve para recorrer la palabra que hay que adivinar en busca de un caracter que selecciono el usuario de un combo box.

Código
  1. public void buscarLetra(){
  2. for(int i=0;i<palabraElegida.length();i++){
  3. if(palabraElegida.substring(i, i+1).equals(letraEscogida)){
  4. System.out.println("si esta la  Letra Escogida");
  5. }
  6. System.out.println(getLetraEscogida());
  7. }
  8. }


Ahora mismo como ven xD, el método eso no es lo que hace. Por que primero estaba probando (imprimiendo por la consola) si se estaba imprimiendo el valor de la variable LetraEscogida, pero cuando sale por consola se imprimen varios nulls. No sé por qué. La variable letraEscogida es private, dentro de la misma clase, así que debería funcionar, y también cree un método get para esa misma variable, pero no funciona, sigue saliendo null.

Esto son los métodos que tengo para capturar el valor de un JCombo Box y que se muestren en un panel cuando hacen clic en un botón:

Código
  1. //obtiene la letra seleccionada del comboBox
  2. public void itemStateChanged(ItemEvent e) {
  3. if(e.getSource() == jcb){ //jcb es el nombre del combo box
  4. letraEscogida = (((String) jcb.getSelectedItem()).toLowerCase());
  5. }
  6. }
  7.  
  8. //habilitar la funcion Salir del menu
  9. //mostrar la letra escogida en el panel intentos
  10. public void actionPerformed(ActionEvent e) {
  11. if(e.getSource() == salir)
  12. System.exit(0);
  13. if(e.getSource() == boton){
  14. lbl_letras.setText(letraEscogida);
  15. }
  16. }

En el constructor tengo estas líneas que no entiendo muy bien su significado, pero sé que hay que ponerlas xD:
Código
  1. salir.addActionListener(this);
  2. boton.addActionListener(this);
  3. jcb.addItemListener(this);


Para hacer el método buscarLetra() bien, debería (el método) de usar letraEscogida cuando se presione el Jboton boton y no desde que se seleccione en el JCombo Box (que es lo que haría el método como lo tengo ahora, si funcionara). Además necesito una forma de activar o llamar ese método cada vez que se presione el botón, (porque después si la letra forma parte de la palabra a adivinar, tengo que sustituir el o los guiones bajos donde debería ir la letra. Ej. si la palabra es vaca, hay 4 guiones bajos _ _ _ _ y si la letra es a, tengo que sustituir el 2do y el 4to guión bajo)
236  Programación / Java / Re: Juego "El ahorcado" con GUI. en: 2 Octubre 2011, 20:04 pm
Y qué tipo de  Layouts van a tener los paneles internos? (palabra, letra, mensaje, intentos)?
Y cómo le específico la posición que cada uno de esos paneles va a ocupar? Ej. Si el panel de palabra va a estar en la columna 1, fila 1.



Lo he puesto como he entendido que me dijiste que lo pusieras :P

En los dos primeros paneles (palabras e intentos) a los JLabels le añadí el panel a al que pertenecen, en las otras dos (letras y mensajes) lo hice al revés, al panel le añadí su JLabel. No sé cuál sea la forma correcta, me parece que es como están las dos primeras. En cualquier caso no me salen los nombres de las etiquetas.

Además el panel queda tapado por la ventana, o sea tengo que anchar la ventana o minimizarla para poderlos ver al tamaño completo que tienen.

Así es como se ve: http://i333.photobucket.com/albums/m399/Link02/mivent-1.png

Código
  1. //ventana
  2. this.setTitle("El Ahorcaito");
  3. this.setBounds(0,0,760,570);
  4. this.getContentPane().setLayout(new GridLayout(1,2));
  5. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  6. this.setVisible(true);
  7.  
  8. //IZQUIERDO
  9. Panel panelIzq = new Panel();
  10. panelIzq.setLayout(new GridLayout(4,1));
  11.  
  12. //panel de las palabras
  13. l1 = new JLabel("Palabras:");
  14. Panel panelPalabras = new Panel();
  15. panelPalabras.setLayout(null);
  16. panelPalabras.setSize(360,90);
  17. panelPalabras.setBackground(Color.lightGray);
  18.  
  19. l1.add(panelPalabras);
  20. panelIzq.add(l1);
  21.  
  22. //panel de intentos
  23. l2 = new JLabel("Intentos:");
  24. Panel panelIntentos = new Panel();
  25. panelIntentos.setLayout(null);
  26. panelIntentos.setSize(360,90);
  27. panelIntentos.setBackground(Color.lightGray);
  28.  
  29. l2.add(panelIntentos);
  30. panelIzq.add(l2);
  31.  
  32. //panel de letras
  33. l3 = new JLabel("Letras:");
  34. Panel panelLetras = new Panel();
  35. panelLetras.setLayout(null);
  36. panelLetras.setSize(360,110);
  37. panelLetras.setBackground(Color.lightGray);
  38.  
  39. panelLetras.add(l3);
  40. panelIzq.add(panelLetras);
  41.  
  42. //panel de mensajes
  43. l4 = new JLabel("Mensajes:");
  44. Panel panelMensajes = new Panel();
  45. panelMensajes.setLayout(null);
  46. panelMensajes.setSize(360,110);
  47. panelMensajes.setBackground(Color.lightGray);
  48.  
  49. panelMensajes.add(l4);
  50. panelIzq.add(panelMensajes);
  51.  
  52. this.getContentPane().add(panelIzq);
  53.  
  54. //DERECHO
  55. Panel panelDer = new Panel();
  56. panelDer.setLayout(new GridLayout(1,1));
  57. this.getContentPane().add(panelDer);
  58.  
  59. //la imagen
  60. l5i = new JLabel();
  61. l5i.setIcon(imagen[0]);
  62. this.getContentPane().add(l5i);

Probe de la forma siguiente y no funciona tampoco:
Código
  1. l1 = new JLabel("Palabras:");
  2. JPanel panelPalabras = new JPanel();
  3. panelPalabras.setLayout(new GridBagLayout());
  4. panelPalabras.setSize(360,90);
  5. panelPalabras.setBackground(Color.lightGray);
  6.  
  7. gbc.gridx = 0;
  8. gbc.gridy = 0;
  9. gbc.gridheight = 1;
  10. gbc.gridwidth = 1;
  11. l1.add(panelPalabras,gbc);
  12. gbc.gridy = 1;
  13. panelIzq.add(l1,gbc);



Es que pensaba que el título iba como un label, como en HTML :p. Pero ya veo que no.

Lo cambié así y ahora funciona:
Código
  1. JPanel panelPalabras = new JPanel();
  2. panelPalabras.setLayout(null);
  3. panelPalabras.setSize(360,90);
  4. panelPalabras.setBackground(Color.lightGray);
  5. titulo = BorderFactory.createTitledBorder("Palabras");
  6. panelPalabras.setBorder(titulo);
  7.  
  8. panelIzq.add(panelPalabras);



Ahora no puedo cambiar el ícono de la taza de cafe de java, tengo esta sentencia en el constructor:
Código
  1. this.setIconImage(Toolkit.getDefaultToolkit().getImage("icono.gif"));

tampoco funciona esta:
Código
  1. this.setIconImage(new ImageIcon(getClass().getResource("icono.gif").getImage()));

la imagen icono.gif está en la carpeta bin del mismo proyecto.
237  Programación / Java / Juego "El ahorcado" con GUI. en: 2 Octubre 2011, 08:16 am
Tengo que hacer una interfaz gráfica que luzca como esto: http://i333.photobucket.com/albums/m399/Link02/ahorcado.gif

Mi ventana hasta ahora luce así: http://i333.photobucket.com/albums/m399/Link02/miventa.png
 :xD y no se parece en nada  :rolleyes:. Creo que mi problema está en el layout no sé cuál usar para que me quede así o cuáles métodos usar, he probado con FloWLayout, pero se ajusta y con GridBagLayout que es el que tiene ahora, pero ya ven como está. Además tampoco sé como poner la imagen al lado.

Esta es la parte de la ventana:
Código
  1. JFrame f = new JFrame();
  2. f.setTitle("El Ahorcaito");
  3. f.setSize(760,570);
  4. f.getContentPane().setLayout(new GridBagLayout());
  5.  
  6. f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  7.  
  8. //menu
  9. mb = new JMenuBar();
  10. menu = new JMenu("Men&#250;");
  11. menu.add(new JMenuItem("Reiniciar"));
  12. menu.addSeparator();
  13. menu.add(new JMenuItem("Salir"));
  14. mb.add(menu);
  15. f.setJMenuBar(mb);
  16. f.setVisible(true);
  17.  
  18. //posiciones
  19. gbc.gridx = 0;
  20. gbc.gridy= 0;
  21. gbc.gridwidth = 1;
  22. gbc.gridheight = 1;
  23. l1 = new JLabel("Palabra:");
  24. f.getContentPane().add(l1,gbc);
  25.  
  26. gbc.gridx = 0;
  27. gbc.gridy = 1;
  28. gbc.gridwidth = 1;
  29. gbc.gridheight = 1;
  30. l2 = new JLabel("Intentos:");
  31. f.getContentPane().add(l2, gbc);
  32.  
  33. gbc.gridx = 0;
  34. gbc.gridy = 2;
  35. gbc.gridwidth = 1;
  36. gbc.gridheight = 1;
  37. l3 = new JLabel("Letras:");
  38. String[] list = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R"
  39. +"S","T","U","V","W","X","Y","Z"};
  40. JComboBox jcb = new JComboBox(list);
  41. f.getContentPane().add(l3, gbc);
  42. gbc.gridx = 0;
  43. gbc.gridy = 3;
  44. gbc.gridwidth = 1;
  45. gbc.gridheight = 1;
  46. f.getContentPane().add(jcb,gbc);
  47.  
  48.  
  49. gbc.gridx = 0;
  50. gbc.gridy = 4;
  51. gbc.gridwidth = 1;
  52. gbc.gridheight = 1;
  53. l4 = new JLabel("Mensajes:");
  54. f.getContentPane().add(l4, gbc);
  55. }

Veo que se parece un poco a HTML, pero más complicado.

Básicamente lo que necesito es saber como crear un "contenedor" para cada uno de los campos y que queden más separados y alineados a la izquierda.


Ya me ha quedado más o menos, creando paneles:
http://i333.photobucket.com/albums/m399/Link02/mivent.png

Pero ahora ¿Cómo agregó un elemento a un panel? un botón por ejemplo. Estoy intentando hacerlo así:
Código
  1. //panel de las palabras
  2. l1 = new JLabel("Palabras:");
  3. gbc.gridx = 0;
  4. gbc.gridy = 0;
  5. f.getContentPane().add(l1,gbc);
  6.  
  7. Panel panelPalabras = new Panel();
  8. panelPalabras.setLayout(null);
  9. panelPalabras.setSize(360,90);
  10. panelPalabras.setBackground(Color.lightGray);
  11. gbc.gridy = 1;
  12.  
  13.  
  14. boton = new JButton();
  15. boton.setText("OK");
  16. boton.setVisible(true);
  17. panelPalabras.add(boton);
  18. f.getContentPane().add(panelPalabras,gbc);
  19. f.setVisible(true);

Pero no aparece el botón.

Solo aparece si lo pongo fuera del panel:
Código
  1. f.getContentPane().add(boton);
238  Foros Generales / Sugerencias y dudas sobre el Foro / Re: ¿Está prohibido pedir ayuda para tareas? en: 26 Septiembre 2011, 05:32 am
Gracias por las aclaraciones. :)
239  Foros Generales / Sugerencias y dudas sobre el Foro / Re: ¿Está prohibido pedir ayuda para tareas? en: 25 Septiembre 2011, 22:47 pm
Lo que no se hacen tareas desde cero es cierto, tu preguntaste una duda que se puede hacer sin problemas.

Por cierto, ese ejercicio lo hacen en la carrera de informatica de la UNED, en programación en java, lo se porque ayudé a un chico con el. Si mal no recuerdo es la última practica entregable. Me equivóco?

¿La última? jeje, si es una de las primeras. Aunque depende en qué semestre iba él, quizás fue el la último de Fundamentos de Programación, yo estoy en la que va después, Programación I; aunque no estudio en la UNED (eso es en España?) yo soy de Rep. Dominicana y estudio en ITLA.
240  Programación / Java / Re: Utilizar métodos sobreescritos o una estructura If en: 24 Septiembre 2011, 22:47 pm
Muchas gracias.

La verdad es que me siento perdido con java y la POO, tengo que ponerme a leer más material.
Páginas: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [24] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ... 60
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines