Estou com um problema. Meu prof pediu para criar um jogo da forca, até aí tudo bem. Só que o programa além de tudo também deveria imprimir as letras que já foram inseridas a cada rodada também, tanto as certas quanto as erradas. Aqui está meu código:
import java.util.Scanner;
import java.util.Random;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String[] palavrasArmazenadas = {"floresta", "forca", "cachorro", "filme", "guaxinim", "mamute"};
Random sorteio = new Random();
int palavra = new Random().nextInt(6);
System.out.println(palavra);
String palavraSelecionada = palavrasArmazenadas[palavra];
char[] traco = new char[palavraSelecionada.length()];
for (int i = 0; i < palavraSelecionada.length(); i++) {
traco[i] = '_';
}
int preDefine = palavrasArmazenadas[palavra].length();
int tentativas = 6;
while (preDefine > 0 && tentativas > 0) {
System.out.println();
for (int i = 0; i < palavraSelecionada.length(); i++) {
System.out.print(" " + traco[i] + " ");
}
System.out.println();
System.out.println("Você dispõe agora de " + tentativas + " chances de adivinhar.");
System.out.println("A palavra tem agora " + preDefine + " letras a serem descobertas");
System.out.println("Digite uma letra: ");
char letras = input.next().charAt(0);
boolean right = false;
for (int i = 0; i < traco.length; i++) {
if (palavrasArmazenadas[palavra].charAt(i) == letras) {
traco[i] = letras;
preDefine--;
right = true;
}
}
if (!right) {
tentativas--;
}
}
if (preDefine == 0) {
System.out.println(palavraSelecionada.toUpperCase() +"\nParabéns. Você ganhou!");
} else {
System.out.println("Você foi enforcado. A palavra era " + palavraSelecionada.toUpperCase());
}
}
}
Como eu faço para ele exibir as letras? Tentei colocar um letras ++ em um System.out dentro do for, mas não deu certo. Só exibia a ultima letra que eu digitava.
Desculpe, mas em que lugar do código eu poderia inserir essa variável? Tentei colocar no começo:
public static void main(String[] args) {
String[] palavrasArmazenadas = {“floresta”, “forca”, “cachorro”, “filme”, “guaxinim”, “mamute”};
Random sorteio = new Random();
int palavra = new Random().nextInt(6);
List letrasInvalidas = new ArrayList<>();
Tá dando erro. Coloquei no lugar errado? Nos outros que tentei também não deu. As outras dicas que você deu já implementei mas como não consigo encaixar essa não posso rodar para ver.
xit status 1
Main.java:9: error: cannot find symbol
List letrasInvalidas = new ArrayList<>();
^
symbol: class List
location: class Main
Main.java:9: error: cannot find symbol
List letrasInvalidas = new ArrayList<>();
^
symbol: class ArrayList
location: class Main
Main.java:30: error: cannot find symbol
char letras = input.next().charAt(0);
^
symbol: variable input
location: class Main
3 errors
import java.util.Scanner;
import java.util.Random;
import java.util.List;
public class Main {
public static void main(String[] args) {
String[] palavrasArmazenadas = {"floresta", "forca", "cachorro", "filme", "guaxinim", "mamute"};
Random sorteio = new Random();
int palavra = new Random().nextInt(6);
List<Character> letrasInvalidas = new ArrayList<>();
System.out.println(palavra);
String palavraSelecionada = palavrasArmazenadas[palavra];
char[] traco = new char[palavraSelecionada.length()];
for (int i = 0; i < palavraSelecionada.length(); i++) {
traco[i] = '_';
}
int preDefine = palavrasArmazenadas[palavra].length();
int tentativas = 6;
while (preDefine > 0 && tentativas > 0) {
System.out.println("Letras inválidas: " + letrasInvalidas);
System.out.println();
for (int i = 0; i < palavraSelecionada.length(); i++) {
System.out.print(" " + traco[i] + " ");
}
System.out.println();
System.out.println("Você dispõe agora de " + tentativas + " chances de adivinhar.");
System.out.println("A palavra tem agora " + preDefine + " letras a serem descobertas");
System.out.println("Digite uma letra: ");
char letras = input.next().charAt(0);
boolean right = false;
for (int i = 0; i < traco.length; i++) {
if (palavrasArmazenadas[palavra].charAt(i) == letras) {
traco[i] = letras;
preDefine--;
right = true;
}
}
if (!right) {
tentativas--;
letrasInvalidas.add(letras);
}
}
if (preDefine == 0) {
System.out.println(palavraSelecionada.toUpperCase() +"\nParabéns. Você ganhou!");
} else {
System.out.println("Você foi enforcado. A palavra era " + palavraSelecionada.toUpperCase());
}
}
}
Eu importei agora, mas ainda não roda. Deu isso:
exit status 1
Main.java:10: error: cannot find symbol
List letrasInvalidas = new ArrayList<>();
^
symbol: class ArrayList
location: class Main
Main.java:31: error: cannot find symbol
char letras = input.next().charAt(0);
^
symbol: variable input
location: class Main
2 errors