Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/06/2011, 22:51
sterlingdiazd
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 4 meses
Puntos: 4
Programa el Ahorcado

Quisiera que me ayudaran con este codigo. Es totalmente funcional, pero hay unos detalles que no consigo resolver.

El programa consiste en un juego del ahorcado. Debe tener un numero de intentos limitados, y ahi es donde no consigo lograrlo (en lo mas facil!).

Cita:
package Ahorcado;

import static java.lang.System.*;
import java.io.IOException;
import java.util.*;

public class Practica {
static int coinciden = 0;
String [] Palabras = {"Java", "PHP"};
static int numeroPalabra = (int) Math.round(Math.random());
static char [] LetrasAdivinadas;
static String charIntroducido = "";
static int intentos;
static String palabraActual;
static int posicionAcierto;
static char [] Letras;
static int terminar;

//Metodo para pedir letra
public char introducirLetra(){
Scanner entrada = new Scanner(in);
out.print("Introduzca la letra: ");
String cadena = entrada.next();
//char [] charIntr = cadena.toCharArray();
charIntroducido = charIntroducido + cadena.charAt(0) + " - ";

return cadena.charAt(0);
}

//Metodo para comparar letra introducida con una palabra del array de palabras
public char coincide(char charIntroducido) throws IOException{
palabraActual = Palabras[numeroPalabra];
Letras = palabraActual.toCharArray();
for (int i = 0; i < Letras.length; i++){
if (charIntroducido == Letras[i]){
posicionAcierto = i;
coinciden = 1;
//Letras[i] = charIntroducido;
}

}
if (coinciden != 1){
intentos++;
out.println("No coincide. \nNumero de Intentos: " + intentos );
}
return charIntroducido;
}

//Metodo para mostrar las rayas segun el tamaño de la palabra del array
public void inicializarPalabra() {
int indiceArray = Palabras[numeroPalabra].length();
LetrasAdivinadas = new char[indiceArray];
for (int i = 0; i < LetrasAdivinadas.length; i++){
LetrasAdivinadas[i] = '_';
out.print(LetrasAdivinadas[i] + " ");
} out.println("\n ");
}

//Metodo para cambiar la raya por la letra correspondiente
public void intercambiarLetra(char charIntroducido) {
int pos = 0;
do {
pos = palabraActual.indexOf(charIntroducido, pos);
if (pos != -1) {
LetrasAdivinadas[pos] = charIntroducido;
pos++;
}
}
while (pos != -1);
}

public void mostrarJuego() {
for (int i = 0; i < Letras.length; i++) {
System.out.print(LetrasAdivinadas[i] + " ");
}
System.out.println();
System.out.println("Letras que ya introduciste: " + charIntroducido);
}

public int fin() {
int res = 0;
for ( int i = 0; i < Letras.length; i++) {
if (LetrasAdivinadas[i] == '_') {
res = 1;
break;
}
else {
res = 0;
}
}
System.out.println();
//System.out.println(res);
return res;
}

public static void main(String[]args) throws IOException {

while( intentos < 5) {

char c;
Practica practica = new Practica();
practica.inicializarPalabra();
/*
practica.coincide(charIntroducido);
practica.intercambiarLetra(charIntroducido);
practica.mostrarJuego();
practica.fin();
*/
do {
c = practica.introducirLetra();
practica.coincide(c);
practica.intercambiarLetra(c);
practica.mostrarJuego();
}
while (practica.fin() == 1);
out.println("Felicidades");
numeroPalabra = (int) Math.round(Math.random());

}
}
}

El problema consiste en que no funciona el while para limitar los intentos.
Cualquier sugerencia adicional sobre el problema, por favor avisemelo. Gracias