Java - Ahorcado

 
Vista:

Ahorcado

Publicado por SoftMan (1 intervención) el 24/06/2011 08:55:30
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!).

1
2
3
4
5
6
7
8
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder