Estou começando com programação, vi que é bom começar a tentar a resolver problemas como este, ou um jogo da velha, então resolvi começar com o jogo da forca, porque n envolve array multidimencional, estou com um duvida e n consegui resolver uma parte, que seria incrementar o erro, mas n estou conseguindo.
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String[] palavra = { "arvore", "flor", "casa", "futebol" };
Random random = new Random();
int index = random.nextInt(4);
String palavraSelecionado = palavra[index];
char[] traco = new char[palavraSelecionado.length()];
System.out.println(palavraSelecionado);
for (int i = 0; i < palavraSelecionado.length(); i++) {
traco[i] = '_';
System.out.print(traco[i] + " ");
}
int acertos = 0;
int erros = 0;
while (acertos < palavraSelecionado.length()) {
char letra = scan.next().charAt(0);
for (int i = 0; i < palavraSelecionado.length(); i++) {
if (palavraSelecionado.charAt(i) == letra) { // verifica se possuí a letra na palavra
if (palavraSelecionado.charAt(i) == traco[i]) { // verifica se a letra informada ja foi digitada
System.out.println("ja possui essa letra");
break;
} else {
traco[i] = letra;
acertos++;
}
}
System.out.print(traco[i] + " ");
}
System.out.println();
System.out.println("Erros " + erros);
System.out.println("Acertos " + acertos);
}
Incremente da mesma forma que está incrementando os acertos, antes do break.
if (palavraSelecionado.charAt(i) == traco[i]) {
System.out.println("ja possui essa letra");
erros++;
break;
}
mas nessa parte eu pensei somente em validar se ja foi digitado a letra, tipo na palavra casa, eu digito ‘a’ ai entraria na palavra, ai dps eu digitaria ‘a’ dnv e mostraria essa mensagem de “ja possui essa letra” n se encaixaria em um erro…
Pois então, o que seria considerado erro?
quando eu digitasse uma letra que n tem na palavra, como a palavra “casa” e eu digitasse um “z”, ai seria um erro, pela logica que estou pensando.
Pelo que entendi a única condição que falta é o erro. Se não passar pela condição:
if (palavraSelecionado.charAt(i) == letra)
Automaticamente a letra fornecida está errada, correto? Então basta colocar uma condição para isso no final do loop.
while (acertos < palavraSelecionado.length()) {
Character letra = scan.next().charAt(0);
boolean isErro = true;
for (int i = 0; i < palavraSelecionado.length(); i++) {
if (palavraSelecionado.charAt(i) == letra) {
isErro = false;
if (palavraSelecionado.charAt(i) == traco[i]) {
System.out.println("ja possui essa letra");
break;
} else {
traco[i] = letra;
acertos++;
}
}
System.out.print(traco[i] + " ");
}
if (isErro) {
erros++;
}
System.out.println();
System.out.println("Erros " + erros);
System.out.println("Acertos " + acertos);
}
Cada vez que retornar no laço while, será criado a variável boolean “isErro” como true. Se entrar naquela condição que mencionei, automaticamente ele será false, pois a letra não é um erro, ela foi “usada”.
Ao sair do loop “for”, irá fazer a verificação do erro. Espero que seja isso, pois não pude testar.
1 curtida
okay man, vlw ai, obrigado mesmo