Bom dia pessoal, preciso de uma ajuda, queria que fazer com que o meu programa no final caso digite 1.

10/07/2022

0

Ao jogador ganhar ou perder preciso que apareça a opção de reiniciar ao apertar 1 e um contador de quantas vezes o programa reiniciou... Alguém pode me ajudar?

public class JogoForca {
public static void main(String[] args) throws FileNotFoundException {
Scanner leitor = new Scanner(System.in);
//Todas as funções printadas na tela do jogador.
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("\n");
System.out.println("Bem vindo ao jogo da forca!");
System.out.println("\n");
System.out.println("O jogo da forca e um jogo em que o jogador tem que acertar qual e a ");
System.out.println("palavra proposta, tendo como dica o numero de letras e o tema ligado a palavra.");
System.out.println("A cada letra errada, e desenhado uma parte do corpo do enforcado.");
System.out.println("Ao fim de 5 tentativas falhas o jogo acaba e o rapaz e enforcado :( ");
System.out.println("\nObjetivo: Salvar o rapaz antes que ele seja enforcado!!!");
System.out.println(" _ ");
System.out.println(" | ");
System.out.println(" O ");
System.out.print("\\ ");
System.out.println("/");
System.out.println(" |");
System.out.print("/ ");
System.out.println("\");
System.out.println("\n");
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

System.out.println("Escolha a quantidade de jogadores: ");
System.out.println("Digite (1) para apenas um jogador e (2) para dois jogadores!!! ");
String jogadores = leitor.nextLine();
//Ler a quantidade de jogadores
String palavra;
//Escolha se for apenas um jogador
if (jogadores.equals("1")) {
//Pasta onde está o banco de palavras. São mais de 29 mil palavras aleatórias do dicionário para o jogador.
Scanner scanner = new Scanner(new File("C:\\Users\\rafae\\JogoForca\\palavras.txt"));
List<String> palavras = new ArrayList<>();
//Botando as palavras do banco de palavras em lista.
while (scanner.hasNext()) {
//'Achar' uma palavra no banco de palavras.
palavras.add(scanner.nextLine());
}
//Escolha da palavra aleatória
Random aleatorio = new Random();
palavra = palavras.get(aleatorio.nextInt(palavras.size()));
//Pegando a palavra jogando no método get e pegando o tamanho da mesma.
}
else {
//Se forem dois jogadores, cai nessa tomada de decisão.
System.out.println("\nJogador 1, digite sua palavra: ");
palavra = leitor.nextLine().toUpperCase();
//Reconhecer a entrada do jogador e botar em letras caixa alta.
System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
System.out.println("\nPronto para o jogador 2! Boa sorte!");
}



List<Character> jogadorAdivinha = new ArrayList<>();
//Definindo a função para um array list.
Integer contador = 0;
//Definindo contador começando em 0.
while(true) {
desenharEnforcado(contador);
//Definindo a função no caso do jogador perder.
if (contador >= 6) {
//Se o jogador errar 6 vezes irá cair nesse if.
System.out.println("\nVoce perdeu :( ");
System.out.println("\nA palavra era: " + palavra);
//Definindo qual era a palavra para ser adivinhada.
break;
}
//Funções para definir o palpite dos jogadores com as letras.
estadoPalavra(palavra, jogadorAdivinha);
if (!palpiteJogador(leitor, palavra, jogadorAdivinha)) {
contador++;
}

if(estadoPalavra(palavra, jogadorAdivinha)) {
System.out.println("\nVoce ganhou :) ");
//No caso do palpite ser o verdadeiro irá cair nesse if.
break;
}

System.out.println("\nDigite seu palpite para a palavra: ");
//Definir palpite do jogador
if(leitor.nextLine().toUpperCase().equals(palavra)) {
//Pegando o palpite e jogando em caixa alta para ficar igual ao banco de palavras.
System.out.println("\nVoce ganhou :) ");
break;
//No caso do jogador ganhar.
}
else {
System.out.println("\nErrou! Tente novamente.");
//No caso do jogador errar e tentar novamente.
}
}
}
//Função para desenhar cada parte do 'enforcado' caso erre alguma letra.
private static void desenharEnforcado(Integer contador) {
System.out.println(" _______ ");
System.out.println(" | |");
if (contador >= 1) {
//Primeiro erro;
System.out.println(" O ");
}

if (contador >= 2) {
//Segundo erro.
System.out.print("\\ ");
if (contador >= 3) {
//Terceiro erro.
System.out.println("/");
}
else {
System.out.println("");
}
}

if (contador >= 4) {
//Quarto erro.
System.out.println(" |");
}

if (contador >= 5) {
//Quinto erro.
System.out.print("/ ");
if (contador >= 6) {
//Sexto erro.
System.out.println("\");
}
else {
System.out.println("");
}
}
System.out.println("");
System.out.println("");
}
//Função para definir palpite do jogador chamando a palavra do banco de palavras e a função jogadorAdivinha.
private static boolean palpiteJogador(Scanner leitor, String palavra, List<Character> jogadorAdivinha) {
System.out.println("\nPor favor, digite uma letra: ");
String palavraAdivinha = leitor.nextLine().toUpperCase();
//Pegando a letra do jogador e botando em caixa alta para combinar com o banco de palavras.
jogadorAdivinha.add(palavraAdivinha.charAt(0));

return palavra.contains(palavraAdivinha);
}

//Pegar o tamanho da palavra e botando em '_' para o jogador saber o tamanho e tentar o palpite.
private static boolean estadoPalavra(String palavra, List<Character> jogadorAdivinha) {
int contador1 = 0;
for (int i = 0; i < palavra.length(); i++) {
if (jogadorAdivinha.contains(palavra.charAt(i))) {
System.out.print(palavra.charAt(i));
contador1++;
//Definindo o tamanho da palavra através do contador.
}
else {
System.out.print(" _ ");
//Imprimindo tamanho da palavra
}
}
System.out.println();

return (palavra.length() == contador1);
//Definir o tamanho da palavra igual o tamanho do contador.
}
}
Rafael

Rafael

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar