Ahorcado Java con Gui

Iniciado por VicInFlames, 25 Mayo 2015, 11:09 AM

0 Miembros y 1 Visitante están viendo este tema.

VicInFlames

Muy buenas a todos,
vengo solicitando ayuda con un proyecto en el que llevo involucrado unos días,pero del que no consigo salir airoso.
Trato de crear una aplicación Java basada en el juego del ahorcado.

Su funcionamiento es,o debería ser el siguiente:

una interfaz muestra una imagen de la base del ahorcado,sin el hombrecillo.
En un Jtextfield se introduce la letra a probar,y esta se compara con un indexOf,con una de las presentes en la palabra final.
Si está,se añade a un label como recordatorio y se pasa a la siguiente letra,
en caso contrario se pasa a la siguiente imagen y se resta una vida,para así disponer de un contador.

cuando se terminan las vidas el juego acaba,si se consigue acertar todas las letras antes de terminar,se gana.

se que tiene fallos mi proyecto,pero no acierto a saber por qué falla mi main.
os paso el código :


Gracias adelantadas por la ayuda.

package Ahorcado;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;



public class AhorcadoJuego extends JFrame implements ActionListener{



static String charIntroducido = "";
// imagenes de Ahorcado
static ImageIcon img1;
static ImageIcon img2;
static ImageIcon img3;
static ImageIcon img4;
static ImageIcon img5;
static ImageIcon img6;
static ImageIcon img7;


//imagen actual ahorcado
static int ImagenAhorcado;


JLabel lblImagenInicial;

JLabel Completa;

//Boton para comprobar
JButton btncomprobar;


String palabra = "Coche";

static int vidas;

//LetrasDichas
String letras = "";
JLabel lblDichas;

//Introducir letras
JTextField txtIntroducir;

char letra;


public AhorcadoJuego(){
super("Juego del Ahorcado");
setSize(600,600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());



//1
lblDichas = new JLabel("Letras Dichas:");
//2
lblImagenInicial = new JLabel(img1 = new ImageIcon("ImgAhorcado/1.png"));
//3
txtIntroducir = new JTextField();
//4
btncomprobar = new JButton();


char letra = ((CharSequence) txtIntroducir).charAt(0);






// int intentos = 0;
//
// for (int i = 0; i <7; i++) {
//
//
//
// }
//

Completa = new JLabel(palabra);

//
// if(intentos >=1){
// Completa.setText("hey");
// }
//
//
setVisible(true);




add(lblDichas,BorderLayout.NORTH);
add(lblImagenInicial,BorderLayout.WEST);
add(txtIntroducir,BorderLayout.SOUTH);
add(btncomprobar,BorderLayout.EAST);
}





public static void main(String[] args) {
// TODO Auto-generated method stub
new AhorcadoJuego();
}





@Override
public void actionPerformed(ActionEvent evento) {
// TODO Auto-generated method stub

if(evento.getSource() == btncomprobar ){

}

String a="";
a = txtIntroducir.getText();
palabra.indexOf(a,5);



}






public void comparar() {
       
        int contador = 1;
       
        String a="";
a = txtIntroducir.getText();
palabra.indexOf(a,5);


       
       
        while(contador < palabra.length())
        {
            if((letra == palabra.indexOf(a,5)))
            {
                contador++;
                ImagenAhorcado=contador;
                vidas--;
            }
            else
            {
                lblDichas.setText("letras Dichas:" + letra);
            }
           
        }
       
     
    }


public int imagen(int vidas){
switch(7){

case 1: lblImagenInicial.setIcon(img7);
break;

case 2: lblImagenInicial.setIcon(img6);
break;

case 3: lblImagenInicial.setIcon(img5);
break;

case 4: lblImagenInicial.setIcon(img4);
break;

case 5: lblImagenInicial.setIcon(img3);
break;

case 6: lblImagenInicial.setIcon(img2);
break;

case 7: lblImagenInicial.setIcon(img1);
break;
//return
}
return vidas;




}
}

0xFer

#1
El error que te lanza está aquí:
Código (java) [Seleccionar]
char letra = ((CharSequence) txtIntroducir).charAt(0);

No puedes hacer una conversión de esta manera:

Código (java) [Seleccionar]

(CharSequence) txtIntroducir)


tampoco tiene sentido que tomes el primer carácter en ese momento porque la TextField ni siquiera tiene texto, tendrías que pedir el primer carácter después de presionar el botón "probar".

luego verificas si hay al menos un carácter y lo conviertes a char así:

Código (java) [Seleccionar]

 char letra;
 
 if( txtIntroducir.getText().length() > 0 )
      letra = txtIntroducir.getText().charAt(0);



También veo un error aquí:
Código (java) [Seleccionar]

 if(evento.getSource() == btncomprobar ){
 
 }
 
 String a="";
 a = txtIntroducir.getText();
  palabra.indexOf(a,5);



No se supone que el código tiene que estar dentro del condicional ?, sino entonces para qué pones el condicional?.

A parte de eso esta linea no tiene sentido:
Código (java) [Seleccionar]

palabra.indexOf(a,5); //MAL
int indice = palabra.indexOf(a,5); //BIEN


El metodo indexOf retorna un valor, pero tú no cachas ese valor con ninguna variable

Luego:

Código (java) [Seleccionar]

if((letra == palabra.indexOf(a,5)))


indexOf retorna un int no un char

Saludos   ;D
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

VicInFlames

Muchas Gracias! Conseguí salir airoso del problema tras replantearmelo! ^^